web-dev-qa-db-ja.com

Google Oauth API Javascript idp iframe初期化エラーChrome

私はGSuiteを使用しており、Google Auth APIを使用するために非常にシンプルなWebアプリをコーディングしていますが、例外「idpiframe_initialization_failed」が発生します。

これで、googleサンプルに示されているとおりの正確なHTMLが得られました。 https://developers.google.com/api-client-library/javascript/samples/samples

1) Google Developer Console でプロジェクトを作成しました

2)OAUTH認証画面をセットアップします

3)クライアントIDを作成し、制限とリダイレクトURLを作成しました

4)API KEYも作成しました

5)最後に、People APIを有効にしました。discoveryDocsパラメーターの設定時にディスカバリーサービスが失敗したためです。

これらのすべてのステップで、gapi.client.initを呼び出すと、例外が発生しますクロムのみ、理由はわかりません。

APIを初期化するコードは次のとおりです。

    gapi.client.init({
        apiKey: 'MY_API_KEY',
        discoveryDocs: ["https://people.googleapis.com/$discovery/rest?version=v1"],
        clientId: 'MY_CLIENT_ID.apps.googleusercontent.com',
        scope: 'profile'
    }).then(function (response) {
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
    },function(reason){
        console.log('onerror');
        console.log(reason);
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());

コードはエラーブロックを実行しています。メッセージは次のとおりです。

details: "Failed to read the 'localStorage' property from 'Window': Access is denied for this document."
error:"idpiframe_initialization_failed"

このエラーが発生する理由は何ですか?

ありがとう!

19
David Pascual

同じ問題が発生しました。しばらく投資した後、理由を見つけました。このエラーは、chrome設定で、サードパーティのCookieとサイトデータをブロックするオプションが有効になっているためです。

このオプションを無効にすることで解決できます。「設定を見つけるには、Chrome settingsを開き、検索ボックスに「コンテンツ設定」と入力し、[コンテンツ設定]ボタンをクリックし、 [Cookie]。[サードパーティのCookieとサイトデータをブロックする]チェックボックスをオフにします。

これが問題の解決に役立つことを願っています。

enter image description here

20
lavleen

問題は、GoogleのAPIコンソールと、資格情報の作成方法に関するものです。次のURLからアクセスした場合にのみ機能するようです https://developers.google.com/identity/sign-in/web/sign-in#before_you_begin できるリンクがありますアプリとOAuth資格情報を作成します。コンソールに移動してその画面から作成すると、動作しないようです。再試行して再作成し、新しいアプリでテストした後Authorized Javascript Originsに追加したURLが常に追加されるとは限らないことがわかりました。

すべてが正常であれば、URLが資格情報ページで利用可能になります see screenshot here

2

私の場合、GoogleがOriginを考慮するまで少し待つ必要がありました。どのくらい時間がかかったのか正確にはわかりません。 30分待った。それから私は眠りについたが、翌朝それは働いていた。

編集:Ooops私はhttp://およびhttps://。それが実際の問題でした。

2
mbonnin

私は同じ問題を抱えていて、3日間検索しました: "popup_closed_by_user"を解決しますconsole.googleに移動しますAPI管理に移動します:Credentials:資格情報を変更します:

許可されたJavascript Origin(http://localhost:port);許可されたリダイレクトURI(http://localhost:port/auth/google/callback);

例:||許可されたJavascript Origin(http://localhost:4200);許可されたリダイレクトURI(http://localhost:4200/auth/google/callback

0
Corbotan