Когда доступно 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. Экран гранта должен появляться только в первый раз.