6

Google ログイン ハイブリッド フローを使用してユーザーを認証していますが、奇妙なバグがあります。ユーザーがサインアウトすると ( authResult['error'] == 'user_signed_out')、signInCallbackが 2 回呼び出されます。ユーザーがサインインしたときは発生しないため、(かなり面倒な)「Welcome Back [user]」プロンプトにリンクされているとは思いません。

私のコードは次のようになります:

function signInCallback(authResult) {
    console.log("signIn callback called, using " + authResult['status']['method'] + " method");
    console.log("authResult = ");
    console.dir(authResult);

    if (authResult['code']) {
        // do things....
    }else if(authResult.error == "user_signed_out"){
        // do other things...
    }
}

これはコンソールに表示されるものです : 拡大版を見るコンソールログ

私が使用しているHTMLコード:

<div id="signinButton" style="display:<?=(isset($_SESSION['userinfo'])) ? 'none' : 'inline-block'?>">
        <span class="g-signin"
            data-scope="<?=join(' ',$scopes)?>"
            data-clientid="<?=$client_id?>"
            data-redirecturi="<?=$redirect_uri?>"
            data-accesstype="<?=$access_type?>"
            data-cookiepolicy="<?=$cookie_policy?>"
            data-callback="signInCallback"
            data-approvalprompt="<?=$approval_prompt?>"
            data-state="<?=$_SESSION['state']?>"
        ></span>
    </div>

2 つの異なるブラウザで 2 つの異なる Google アカウントを使用しています。私は当初、それが原因だと思っていました (Google は google_account_id とユーザーの状態を cookie に保存しますG_USERSTATE_H3 : 'google_account_id#1=0&google_account_id#2=1')。しかし、両方のブラウザーですべての Cookie を消去し、1 つのブラウザーと 1 つの Google アカウントのみを開いてテストを実行しました。私はまだこのバグを取得します。

これは非常に厄介なバグです。さらに、Google Chrome はこれをかなりうまく処理しますが、Firefox は完全にびっくりして、コールバックを 3 回実行し、その後、ユーザーはログインできません (1 秒間ログインすると、すぐに再サインアウトされます)。

誰でも私を助けてもらえますか?

更新: これは Google JS Api が含まれている方法です:

<script>
// Asynchronous load
(function () {
  var po = document.createElement('script');
  po.type = 'text/javascript';
  po.async = true;
  po.src = 'https://plus.google.com/js/client:plusone.js';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(po, s);
})();
</script>
4

1 に答える 1

0

これは正確な答えではありませんが、Chrome を使用するたびにこのエラーが発生しますが、Safari に切り替えるとすぐに消えました。これは OP には役立たないかもしれませんが、他の誰かがこのスレッドに出くわした場合に備えて、別のブラウザーを使用してみてください。それは私のために働いた。

于 2014-09-08T18:44:23.603 に答える