7

次のコードは Chrome を使用して正しく動作しますが (マップと場所のデータへのアクセスを許可する許可をユーザーに要求するポップアップを表示します)、IE 9 はポップアップ フォームを開きますが、それは空です。handleAuthClick メソッドを呼び出すとき。setTimeouts を追加しようとしましたが、効果がありません。ポップアップが許可されていることを確認し、Chrome と IE で同一のポップアップ ページの URL を確認しました。誰かがこの問題に遭遇しましたか? または、誰かが回避策を提供できますか?

var clientId = '############.apps.googleusercontent.com';
var apiKey = '#A#A#A#A##';
var scopes = 'https://www.googleapis.com/auth/plus.me';

function handleClientLoad() {
    gapi.client.setApiKey(apiKey);
    window.setTimeout(checkAuth, 1);
}

function checkAuth() {
    gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: true }, handleAuthResult);
}

function handleAuthResult(authResult) {
    if (authResult && !authResult.error) {
        makeApiCall();
    } else {
    }
}

function handleAuthClick(event) {
    try {
        window.setTimeout(function () {
            gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false }, handleAuthResult);
        }, 10);
    } catch (e) { alert(e.message); }
}
function makeApiCall() {
    gapi.client.load('plus', 'v1', function () {
        var request = gapi.client.plus.people.get({
            'userId': 'me'
        });
        request.execute(function (resp) {
            $(".google-signin").find("img").attr('src', resp.image.url).css('height', '32').css('width', '32');
            $("#login-msg").text('Welcome: ' + resp.displayName);
            $("img.vote").css('visibility', 'visible');

        });
    });
}
4

3 に答える 3

1

クライアント Web アプリケーションと Google 間のクロスオリジン スクリプトが、ゾーン セキュリティによってブロックされている可能性があります。

スクリプトが実行されている google.com と Web ページの両方が同じセキュリティ ゾーン (通常はインターネット ゾーン) にあることを確認してください。よくわからない場合は、serverfault#612903 を参照してください/ie11-how-to-check-into-which-zone-a-url-falls

また、Web アプリケーションと Google が分類されているゾーンがスクリプトの実行を許可するように構成されていることを確認し、google.com に対するサードパーティの Cookie アクセスが許可されていることを確認します。これは承認の確認に使用されるためです。

于 2016-01-25T18:18:57.943 に答える
1

この問題を最終的に解決したのは、setTimeout の期間を 10 から 1000 に増やすことでした。Google 認証ポップアップは、空白の画面ではなく、正しいサインイン情報とともに表示されました。

于 2013-01-22T21:16:50.427 に答える
0

使用しているマップ/フィード スコープは、非推奨の Google Maps Data API 用であることに注意してください。これは、Places APIとは異なります。

あなたの実際の質問については、Places API を Plus API に置き換えるためにタグを付け直しています。それがあなたがここで使用しているものだからです。

于 2013-01-15T19:46:32.913 に答える