11

参考までに、私が使用している Google+ フローを次に示します。

https://developers.google.com/+/web/signin/server-side-flow

  1. ユーザーがサインイン ボタンをクリックします。承認リクエストは Google の OAuth サーバーに送信されます
  2. ユーザーに対して OAuth ダイアログがトリガーされる
  3. access_token、id_token、およびワンタイム コードが返されます
  4. クライアントは id_token とコードをサーバーに送信します
  5. サーバーは access_token のワンタイム コードを交換します
  6. Google は access_token を返します
  7. サーバーはクライアントに「完全にログインした」ことを確認する必要があります

これはすでにほとんど機能していますが、ステップ 7 でクライアントが「完全にログイン」したことを AngularJS に知らせたいと思います。

理想的には、手順 3 を AngularJS Controller で処理したいと考えていますが、それが可能かどうかはわかりません。

サインイン ボタンは次の場所にあります。

https://developers.google.com/+/web/signin/server-side-flow#step_4_add_the_sign-in_button_to_your_page

<!-- Add where you want your sign-in button to render -->
<div id="signinButton">
  <span class="g-signin"
    data-scope="https://www.googleapis.com/auth/plus.login"
    data-clientid="YOUR_CLIENT_ID"
    data-redirecturi="postmessage"
    data-accesstype="offline"
    data-cookiepolicy="single_host_origin"
    data-callback="signInCallback">
  </span>
</div>
<div id="result"></div>

data-callback パラメーターを使用すると関数を指定できますが、グローバル関数でしか機能しません。

私が考えることができる唯一の回避策は、ユーザーがログインした場合に備えて、AngularJS が更新のためにサーバーを常にポーリングすることですが、イベント構造内でこれを機能させてすべて瞬時にする方法があるかどうか疑問に思っていました。

これが可能かどうかにかかわらず、どうすればよいかアドバイスをいただければ幸いです。ご不明な点がございましたら、お知らせください。ありがとう!

4

1 に答える 1

11

たくさんの検索の後、私は最終的にここで必要なものを見つけました:

https://developers.google.com/+/web/signin/#javascript_api

必要なことを達成するためにデータ属性を使用できませんでした。JavaScript API を使用してボタンを手動でレンダリングする必要がありました。

于 2013-03-07T20:36:13.390 に答える