Когда доступно access_type = Online?: OAuth2 - API Google
При запросе учетных данных OAuth я могу указать, что access_type будет автономным или онлайн.
Выбор типа доступа Online заставляет пользователей одобрять доступ к моему приложению каждый раз, когда они заходят в систему. Почему это? Разве пользователь не одобрил мое приложение?
Обновление # 1:
У меня есть параметр authorized_prompt, заданный как "auto".
Если я просто выйду из Google, не удалив файлы cookie, это не подскажет мне снова. Но удаление файлов cookie возвращает экран разрешения.
Обновление # 2:
Он отлично работает на игровой площадке OAuth. http://code.google.com/oauthplayground/
Использование OAuth 2.0 для приложений веб-сервера
https://developers.google.com/accounts/docs/OAuth2WebServer
Обновление # 3:
Соответствующие фрагменты кода
Вспомогательный метод для создания URL-адреса OAuth
def build_auth_uri
return @client.authorization.authorization_uri(
:access_type => :online,
:approval_prompt => :auto
).to_s
end
Вызов метода помощника в представлении
<a href="<%= build_auth_uri %>"> Connect Me! </a>
Сгенерированный URL-адрес OAuth на веб-странице
https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&redirect_uri=http://localhost:3000/gclient/gcallback&response_type=code
Ответы
Ответ 1
В этих потоках присутствует еще один параметр, и я подозреваю, что вы столкнулись с ним. Это параметр approval_prompt
.
При access_type=online
вам также можно указать значение для approval_prompt
. Если он установлен на approval_prompt=force
, ваш пользователь всегда будет запрашиваться, даже если он уже предоставлен.
С другой стороны, когда access_type=offline
, approval_prompt
может быть установлено только approval_prompt=force
, но для восполнения этого ограничения вам также предоставляется refresh_token
, который вы можете использовать для обновления токена доступа.
Проверьте URL-адрес, который открывается вашим access_type=online
. Попробуйте установить approval_prompt=auto
. Экран гранта должен появляться только в первый раз.