Проблема аутентификации гибридного протокола Google - PullRequest
5 голосов
/ 09 октября 2011

Я успешно использую гибридный протокол OAuth1.0 + OpenID для аутентификации в Google, а затем использую его сервисы.

Однако я сталкиваюсь с ошибкой для определенной учетной записи пользователя. Мой текущий поток:

  1. Выполнить обнаружение

  2. перенаправить пользователя к провайдеру с параметрами OpenID и OAuth (например: https://accounts.google.com/o/openid2/auth?https://accounts.google.com/o/openid2/auth?openid.ns=http://specs.openid.net/auth/2.0&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&.....&openid.ns.ext2=http://specs.openid.net/extensions/oauth/1.0&openid.ext2.consumer=mywebsite.com&openid.ext2.scope=https://picasaweb.google.com/data+https://www-opensocial.googleusercontent.com/api/people/+http://www.google.com/m8/feeds/)

  3. Как только пользователь успешно аутентифицирует и утверждает запрос на разрешение, приложение возвращает обратно к моему указанному длинному callbackurl со строкой, аналогичной вышеупомянутому запросу, из которого я извлекаю токен авторизации из "openid.ext2.request_token" и затем получаю токен доступа передав его.

Однако для конкретной учетной записи пользователя, вместо передачи результата, как указано выше, после успешной аутентификации и предоставления разрешения, Google перенаправляет на некоторый URL https://accounts.google.com/o/openid2/approval?xsrfsign=AC9jObYAAAAATpF6x6S6Ac7MfHaZ, а затем обратно в мое приложение без каких-либо параметров в строке запроса.

Этот же код отлично работает для других учетных записей. Я не могу определить, что особенного может быть для одной учетной записи (за исключением того, что я создал ее только в прошлом месяце). Как примечание, это происходит только тогда, когда я включаю Picasa в область действия. Если я исключу Picasa, это сработает.

Пожалуйста, помогите в этом.

1 Ответ

1 голос
/ 31 октября 2011

удалось решить эту проблему, добавив запрос request_token. странно, это работает без этого запроса для большинства учетных записей. Однако для создания новых учетных записей мне пришлось явно указать этот параметр в запросе. Однажды этот параметр был установлен, вместо того, чтобы перенаправлять пользователя на xsrfsign .. URL, я получил данные пользователя и маркер запроса.

...