1

新しい API を使用して Google サインインを実装しようとしています: https://developers.google.com/identity/sign-in/web/

サインインとサインアウトは正常に機能します。私の問題は、サーバー側なしで他のページでセッションを管理する方法がわからないことです。

だから私はこのコードを試しました - https://developers.google.com/identity/sign-in/web/session-state

そして、それは私にとってはうまくいきません。すべてのページに Google サインイン ボタンを配置したくありません。「auth2.attachClickHandler ..」の部分を削除すると、コード全体が機能しません。

私が望むのは、ユーザーがまだ接続されているかどうかを他のページ (Google ボタンのあるページではなく) に示すことだけです。手伝って頂けますか?

編集: 回答で提案されている次のコードを試しましたが、次のようなエラーが表示されます:「不明な TypeError: 未定義のプロパティ 'init' を読み取れません」

コード:

var auth2 = gapi.auth2.init({
client_id : 'ID.apps.googleusercontent.com'
});
auth2.then(function() {
var isSignedIn = auth2.isSignedIn.get();
var currentUser = auth2.currentUser.get();
if (isSignedIn) {
    console.log("signed in");
    // User is signed in.
    // Pass currentUser to onSignIn callback.
 } else {
    console.log("NOT signed in");
    // User is not signed in.
    // call auth2.attachClickHandler
    // or even better call gapi.signin2.render
    }
}); 
4

1 に答える 1

1

すべてのページに gapi.auth2 をロードして、以下を呼び出すことができます。

var auth2 = gapi.auth2.init(...);
auth2.then(function() {
  var isSignedIn = auth2.isSignedIn.get();
  var currentUser = auth2.currentUser.get();
  if (isSignedIn) {
    // User is signed in.
    // Pass currentUser to onSignIn callback.
  } else {
    // User is not signed in.
    // call auth2.attachClickHandler
    // or even better call gapi.signin2.render
  }
});

このソリューションでは、サインイン ボタンは、ユーザーがサインインしていない場合にのみ表示されます。

于 2015-06-30T22:13:29.837 に答える