3

Google の API を使用するサード パーティの API にアクセスしようとしていますが、そのためには、gapi.auth.authorize を使用して Google 情報を API に渡す必要があります。userinfo/email が廃止されたことを知った後、新しい email スコープを使用していますが、まだ access_denied エラーが発生します。

ここに私が問題を抱えているものの煮詰めたバージョンがあります...

index.html

<!doctype html>
<html>
<head>
</head>
<body>
   <p>Tripping all day...</p>
   <p id="output"></p>
   <script src="auth.js"></script>

   <script type="text/javascript">
       function init() {
       console.log('init');
       checkAuth();
       }
   </script>
   <script src="https://apis.google.com/js/client.js?onload=init">    </script>
   <script>
      document.getElementById("output").innerHTML = "Coooooorrrrrraaaaalll";
   </script>
`enter code here`</body>
</html>

auth.js

CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';

var SCOPES = 'email';

function handleAuth(authResult) {
    console.log('handle auth');
    console.log(authResult);
}

function checkAuth() {
    console.log('check auth');
    gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: true, cookie_policy: 'single_host_origin'}, handleAuth);
}

コンソールログは、失敗するとこのエラーオブジェクトを吐き出します...

client_id: "xxxxxxxxxxxxx.apps.googleusercontent.com"
cookie_policy: "single_host_origin"
error: "immediate_failed"
error_subtype: "access_denied"
expires_at: "1438103114"
expires_in: "86400"
g_user_cookie_policy: "single_host_origin"
issued_at: "1438016714"
response_type: "token"
scope: "email"
state: ""

私が間違っていることや、次にどこを見るべきかについての洞察をいただければ幸いです。ありがとう!

4

1 に答える 1

3

同様の問題を抱えている他の人のために、gap.auth.authorize呼び出しの「即時」パラメーターをfalseに変更すると、使用するGoogleアカウントを選択できるボックスがポップアップすることがわかりました。そこから、すべてが正常に実行されます。

舞台裏で何が起こっているかについてはまだ 100% ではありませんが、今のところは機能しています。最終的には、ポップアップを行わなくてもすぐに認証が機能するようにしたいと考えていますが、それはおそらく別の問題になるでしょう。

于 2015-07-28T20:29:45.133 に答える