web-dev-qa-db-ja.com

アプリは「オフラインアクセスを許可」する許可を求め続けますが、それはなぜですか?

アプリをoAuth2で承認し、要求されたスコープのアクセス許可を取得した後、Google oAuth2でログインしようとするたびに、アプリにオフラインアクセスのアクセス許可を与えるかどうかを尋ねる画面が表示されます。一度許可を与えれば、再び表示されるべきではないでしょうか?

enter image description here

34
jayarjo

approval_Promptパラメーターを使用していますか?更新トークンを既に持っている場合は、オフラインアクセスを再度要求しないでください。ユーザーがオフラインアクセスを要求せずに再度ログインした場合でも、有効なままである必要があります。

これに関するリファレンスは here にあります。

10
user2897701

このプロンプトは、2つのパラメーターが原因で発生する可能性があります。

  • access_type(「オフライン」の場合)
  • authorization_Prompt(「force」の場合)

access_typeを 'online'に、apporoval_Promptを 'auto'に設定していることを確認してください

 $client->setAccessType('online');
 $client->setApprovalPrompt('auto') ;
13
Deepak Mittal

私の推測では、アプリには必ずOAuth=を強制する承認_プロンプト=強制があります。ユーザーは要求したスコープを既に承認しているため、画面を繰り返す必要はありません何かを言うので、より良いアイデアがない場合、Googleは「オフラインアクセス」を要求します。

認証を強制していないことを確認してください。

7
pinoyyid

これはエラーではありません。これは、google oauth2の通常のシナリオです。

最初のプロセスの同意は次のとおりです:

  1. ユーザーは、アプリケーションがユーザーに関する情報を取得することに同意します。
  2. ユーザーが[承認]ボタンをクリックすると、ブラウザは同意情報をCookieに保存し、Googleアカウントは許可を保存します(表示 https://security.google.com/settings/security/permissions

2番目のプロセスから:

ブラウザは、GoogleアカウントのCookie同意許可を確認します。

  • ブラウザにCookieが存在し、このアプリケーションに対する許可がある場合( https://security.google.com/settings/security/permissions ):同意画面は無視されます
  • Cookieがブラウザに存在するが、このアプリケーションの許可がない場合:同意画面が表示されます
  • ブラウザにCookieが存在しない場合:アプリケーションには「オフラインアクセスがあります」と表示されます。
5
ngocld