Живая лента Google и OAuth — проблема с перенаправлением

Надеюсь, это не станет слишком сложным. :) Дело в том..

Я пытаюсь публиковать свои заметки PHP-кода в Google Buzz, используя OAuth в качестве механизма аутентификации. Я делаю типичный «танец OAuth» (получаю токен запроса, авторизую его, обмениваю на токен доступа), но столкнулся с некоторыми проблемами, которые, похоже, на стороне Google. Надеюсь, я ошибаюсь - это было бы намного проще исправить. :)

Чтобы перейти к сути - параметр oauth_callback, похоже, не передается в форму авторизации. URI авторизации, на который я перенаправляюсь, выглядит следующим образом:

https://www.google.com/buzz/api/auth/OAuthAuthorizeToken
?domain=<my.domain>
&scope=<urlencode(https://www.googleapis.com/auth/buzz)>
&oauth_token=<request_token>
&oauth_callback=<my.domain/callback>

При перенаправлении клиенту предлагается авторизовать сайт для чтения/записи из/в Buzz. Если он принят, Google снова запрашивает (но в другой форме) разрешить доступ к .. после разрешения во второй раз отображается сообщение об успешном завершении, но он не возвращает никаких токенов на мой сайт, не перенаправляя на uri oauth_callback.

Обходной путь, который я нашел, заключается в том, чтобы вручную добавить поле формы «oauth_callback =» через инспектора firebug/chrome, а затем, после этих двух подтверждений, он перенаправляется на мой сайт, и я могу извлечь авторизованный токен из ответа и обменять его на токен доступа. Если я использую «стандартную» конечную точку авторизации Google, я получаю правильное перенаправление (только одно подтверждение), но затем токен доступа, который я получаю после этого, недействителен для Buzz.

Так я ошибаюсь или гугл?! :D Я реализовал OAuth для взаимодействия с некоторыми другими сервисами (Facebook, MySpace...), но у меня никогда не было таких проблем.


person parserr    schedule 03.08.2010    source источник


Ответы (1)


хорошо, когда я столкнулся с проблемой на следующее утро, с (частично) свежим взглядом, решение было довольно простым (но все еще недокументированным).. :) на случай, если кому-то еще нужен ответ - параметр oauth_callback должен быть указан при запросе токена запроса.

person parserr    schedule 03.08.2010
comment
на самом деле это задокументировано в общей документации OAuth (code.google.com/intl/ru/apis/accounts/docs/OAuth_ref.html#RequestToken), ссылка на который содержится в разделе аутентификации документации Живой ленты (code.google.com/apis/buzz/v1/using_rest.html#authentication). - person Will Norris; 13.08.2010