3

Google+ サインイン API を使用する Web アプリケーションを作成しましたが、自動サインイン動作で問題が発生しました。

正しく実装したかどうかはわかりませんが、問題は次のとおりです。

  • ユーザーは、Google+ サインインの詳細を使用してアプリケーションにサインインします。
  • 今、彼らは私のアプリだけでなく、Google アカウントにもサインインしています。
  • 終了すると、彼らは私のアプリからサインアウトしますが、Google にはサインインしたままです。
  • 別のユーザー (同じマシン/ブラウザーを使用) が私のサイトにアクセスすると、以前のユーザーの詳細を使用して自動的にサインインします。

これは悪い習慣であり、a) ユーザーがサイトを離れるときに Google アカウントからサインアウトするか、b) Google+ サインインの自動動作を無効にすることを避けることを理解しています。

では、どうすればこの動作を防ぐことができますか?

4

3 に答える 3

1

ユーザーがアプリケーションを承認すると、Google+ サインイン ボタンによって、ユーザーが誰であるかがアプリケーションに自動的に通知されます。ユーザーが別のアカウントでサイトを使用したい場合は、Google からサインアウトし、別のユーザーとしてサインインする必要があります。

ユーザーとサイト間のサインイン状態を、Google でのユーザーのサインイン状態とは異なるものにしたいようです。これを実現するには、独自のセッション状態を管理する必要があります。つまり、ユーザーがアプリを承認した場合、ボタンは常に JavaScript コールバックを起動します。開発者は、ユーザーがサインイン ボタンをクリックするまで、その情報を無視することができます。一部の開発者は、クリック イベント ハンドラーをボタンにアタッチしてこれを行います。

于 2013-04-15T20:49:24.293 に答える
0

私もこの問題を抱えていました。gmail 認証からメール ID を取得したらすぐに、gmail アカウントからサインアウトする必要があります。

<script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
<script>

function onSuccessG(googleUser) {
        var profile = googleUser.getBasicProfile();
        console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
        console.log('Name: ' + profile.getName());
        console.log('Image URL: ' + profile.getImageUrl());
        console.log('Email: ' + profile.getEmail());
        //now here write a code of login//
        //
        //now here write a code of login//

       signOut();//call sign out function which will sign out user from their gmail accont

}
function onFailureG(error) {
    console.log(error);
}
function renderButton() {
  gapi.signin2.render('my-signin2', {
    'scope': 'https://www.googleapis.com/auth/plus.login',
    'width': 323,
    'height': 35,
    'longtitle': true,
    'theme': 'dark',
    'onsuccess': onSuccessG,
    'onfailure': onFailureG
  });
}
function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
        console.log('User signed out.');
    });
}

于 2015-10-20T11:25:18.677 に答える