Google OAuth2使用AngularJS回调登录

时间:2013-03-07 04:30:48

标签: javascript angularjs google-api oauth-2.0 google-oauth

供参考,以下是我正在使用的Google+信息流:

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

  
      
  1. 用户点击登录按钮。授权请求将发送到Google的OAuth服务器
  2.   
  3. 为用户触发OAuth对话框
  4.   
  5. access_token,id_token,并返回一次性代码
  6.   
  7. 客户端将id_token和代码发送到服务器
  8.   
  9. 服务器交换access_token的一次性代码
  10.   
  11. Google返回access_token
  12.   
  13. 服务器应确认“完全登录”到客户端
  14.   

我已经有了这个大部分工作,但我希望AngularJS知道客户端在第7步“完全登录”。

理想情况下,我希望第3步由AngularJS控制器处理,但我不确定这是否可行。

登录按钮位于:

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不断轮询服务器以获取更新,以防万一用户登录,但我想知道是否有办法在事件结构中使这个工作,以便它是一瞬间。

无论这是否可行,我将非常感谢任何关于我应该怎么做的建议。请让我知道,如果你有任何问题。谢谢!

1 个答案:

答案 0 :(得分:11)

经过一番搜索,我终于找到了我需要的东西:

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

我无法使用数据属性来完成我需要的工作。我需要使用javascript API手动渲染按钮。