11

OAuth 資格情報を要求するときに、access_type を Offline または Online に指定できます。

オンライン アクセス タイプを選択すると、ユーザーはログインするたびにアプリへのアクセスを承認する必要があります。何故ですか?ユーザーは既に私のアプリを承認していませんか?

更新 #1:

approval_prompt を「自動」に設定しています。
Cookie を削除せずに Google からログアウトすると、再度プロンプトが表示されることはありません。ただし、Cookie を削除すると、許可画面に戻ります。

更新 #2:

OAuth Playground を介して正常に動作します。 http://code.google.com/oauthplayground/

Web サーバー アプリケーションに OAuth 2.0 を使用する https://developers.google.com/accounts/docs/OAuth2WebServer

更新 #3: 関連するコード スニペット

OAuth URL を生成するヘルパー メソッド

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>

Web ページで生成された OAuth URL

https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&redirect_uri=http://localhost:3000/gclient/gcallback&response_type=code
4

1 に答える 1

16

これらのフローには、もう 1 つのパラメーターが関係しています。あなたはそのパラメーターに遭遇しているのではないかと思います。approval_promptパラメータです。

access_type=onlineの値も指定できる場合approval_prompt。に設定されている場合approval_prompt=force、ユーザーが既に許可している場合でも、常にプロンプ​​トが表示されます。

一方、 when access_type=offline,approval_promptは にしか設定できませんがapproval_prompt=force、この制限を補うためにrefresh_token、アクセス トークンを更新するために使用できる も提供されます。

access_type=online開いている URL を確認します。設定してみてくださいapproval_prompt=auto。付与画面は初回のみ表示されます。

于 2012-07-13T19:14:40.210 に答える