9

tl;dr:これら 2 つのプラットフォーム間でクライアント側の Google ログイン フローを実装する際の違いを正確に説明できる人はいますか?

裏話:

クライアント側の Google サインインを自分の Web サイトに実装しようとしています。まず、タグを使用してグローバル設定で Google+ プラットフォームを実装したので、ユーザー セッションが監視されます。ここで情報を入手: https://developers.google.com/+/web/signin/

ただし、ユーザーがログインしていない場合、サイトがユーザーのログイン状態を自動的にチェックするという問題が発生しました。その結果、「ログアウトしました」という多くの「toastr」メッセージが表示され、signInCallback 関数に実装しました。それはかなり迷惑でした。

それで、私はいくつかの調査を行い、彼らの「クイックスタートアプリ」に出くわし、それを閲覧しました. ガイドよりもはるかに複雑です。多くの要素が Google Identity Platform で文書化されています。こちら: https://developers.google.com/identity/sign-in/web/reference

ログインを実装する正しい方法が何であるかがよくわかりません-ユーザー状態のタグコールバックチェックを備えた軽量のGoogle+ボタンですか、それともリスナー、gapiインスタンスなどすべてを備えた堅牢なGIPの方法ですか? これらのプラットフォームが提供する違いは何ですか?

4

1 に答える 1

13

Google+ プラットフォームのサインイン (gapi.auth) と ID プラットフォーム (gapi.auth2) は関連しており、同様に機能します。

両者の主な違いは次のとおりです。

gapi.auth2 はよりモダンな JavaScript ( listeners とpromise ) をサポートしているので、これを行うことができます:

var signinChanged = function (val) {
  console.log('Signin state changed to ', val);
  document.getElementById('signed-in-cell').innerText = val;
};

auth2.isSignedIn.listen(signinChanged);

...auth2 には、より明示的な構文があり、動作をより細かく制御できます。

gapi.load('auth2', function() {
  auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    fetch_basic_profile: true,
    scope: 'profile'
  });

  // Sign the user in, and then retrieve their ID.
  auth2.signIn().then(function() {
    console.log(auth2.currentUser.get().getId());
  });
});

また、auth2 は、追加の API 呼び出しを必要とせずに、基本的なプロファイル サポートを提供します。

if (auth2.isSignedIn.get()) {
  var profile = auth2.currentUser.get().getBasicProfile();
  console.log('ID: ' + profile.getId());
  console.log('Name: ' + profile.getName());
  console.log('Image URL: ' + profile.getImageUrl());
  console.log('Email: ' + profile.getEmail());
}

つまり、https://developers.google.com/identity/sign-in/web/など、https://developers.google.com/identity/sign-in/に記載されているアプローチを使用することをお勧めします

ログインを正しく実装するかどうかは、必要なサインインの種類によって異なります。

  • クライアントのみ、JavaScript/iOS/Android クライアントのみを使用できます
  • ハイブリッド クライアント サーバー認証。クイックスタートの 1 つに似たものを実装する必要があります。

クライアントのみを実行している場合は、非常に単純なはずです。ユーザーを承認してから、API クライアントを使用してリソースにアクセスします。セッションの管理など、より高度な作業を行う場合は、認証コードを使用してサーバーを認証した後、API クライアントから ID トークンを使用してユーザーのセッションを認証する必要があります。

于 2015-04-24T22:22:43.337 に答える