1

Web アプリ (AngularJS) に Google ソーシャル ログインを統合しています。ユーザーをサインアウトできません。以下は私の少し単純化されたアプローチです -

シナリオ 1. 初めてのユーザー -

クリックするとページ「X」が読み込まれる独自のボタンがあります。このページは、ユーザーを Google ログインおよび/またはアプリ権限承認ページにリダイレクトします。最後に、X はユーザーを私のサイトに戻します。Google 経由でログインしているという情報が渡されましたが、後でサインアウトできるように、gapi 経由でサインインする必要があります。

サインインは 2 つの方法で実装できます -

  1. gapi.auth.authorize()immediate: trueまたは_
  2. gapi.auth.signIn()'immediate': true

私は両方を試しました。どちらも機能しません。2 つ目は、ブラウザがポップアップがブロックされたことを示すという追加の欠点があります。

gapi.auth.signOut()次に、ページ「Y」を呼び出してロードするサインアウト ボタンがあります。ページ Y が私のサイトに戻り、シナリオ 2 がトリガーされ (以下を参照)、サインインしたページが読み込まれます:(

シナリオ 2. 同じブラウザでユーザーを再訪。

以下のコードを使用して、最初に google acess_token があるかどうかを確認して、Google 経由でログインを試みることができるようにします。

gapi.auth.authorize({
    client_id: self.googleAppId,
    immediate: true,
    scope: ['https://www.googleapis.com/auth/plus.me'],
    cookie_policy: window.location.protocol+'//'+window.location.hostname
}, function (response: any) {
    console.log(response);
    if (response.access_token) {
        self.googleLogin(response.access_token);
    }
    else {
        self.loadHome();
    }
});

googleLogin は別のページ「Z」をロードし、元のページにリダイレクトします。Z は URL でパラメータを渡すので、Google 経由でログインしたことがわかります。そして、シナリオ 1 に戻ります。

問題は、ユーザーが を使用してサインアウトした場合、 (シナリオ 2 で) access_token を返すのはgapi.auth.signOutなぜですか? gapi.auth.authorize2 番目のシナリオで、サインインしているユーザーとサインアウトしているユーザーを区別するにはどうすればよいですか?

2番目のシナリオで置き換えgapi.auth.authorizeてみました。gapi.auth.signIn()しかし、これは、私のインデックスページが読み込まれるとすぐに、Google ログインページを読み込みます。なので、それ以上調べませんでした。

どこが間違っているのか、これを修正する方法を教えてください。

4

0 に答える 0