Я делаю огромную ошибку, когда пишу свою собственную библиотеку OAuth и классы-оболочки на PHP. Все прекрасно работает для реализации OAuth в Твиттере, но мне не удается подписать шаг access_token для Tumblr и Flickr.
ЕДИНСТВЕННАЯ разница в этом шаге, теперь у меня есть параметры oauth_token и oauth_verifier. Я использую заголовок авторизации, и единственная проблема, о которой я могу думать, это то, что есть некоторые проблемы с кодировкой символов, но я не уверен.
Базовая строка (для ясности разбита):
POST&
http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token&
oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8
%26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5
%26oauth_signature_method%3DHMAC-SHA1
%26oauth_timestamp%3D1322981994
%26oauth_token%3D72157628270097303-18aa378b4ab02af3
%26oauth_verifier%3Dec7811503fdd4380
%26oauth_version%3D1.0
Это именно то, чего ожидает Flickr (они говорят мне об этом в ответе на ошибку), что заставляет меня поверить, что проблема заключается в подписи.
Заголовок авторизации (также для ясности разбит):
Authorization: OAuth
oauth_consumer_key="eeedfcd4c46a2c12080f58eb90a974d8",
oauth_nonce="322190b47ca680d053338724ad1cc56d35d3e7b5",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1322981994",
oauth_token="72157628270097303-18aa378b4ab02af3",
oauth_verifier="ec7811503fdd4380",
oauth_version="1.0",
oauth_signature="LYJtgHetQWNKX3rtQlSs643FdWY%3D"
И ответ Фликра :
oauth_problem=signature_invalid&
debug_sbs=POST&
http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token&
oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8
%26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5
%26oauth_signature_method%3DHMAC-SHA1
%26oauth_timestamp%3D1322981994
%26oauth_token%3D72157628270097303-18aa378b4ab02af3
%26oauth_verifier%3Dec7811503fdd4380
%26oauth_version%3D1.0
Нет параметров GET или POST. Кажется, все правильно сошло с рук. Подписание работает для шага request_token (и для Twitter, для ЛЮБОГО запроса). Я проверил, что часы моего сервера находятся в пределах секунды Я что-то упускаю из виду? Как вы будете диагностировать это?