2013-03-07 131 views
9

僅供參考,這裏是我一起工作的Google+的流量:谷歌的OAuth2登錄與AngularJS回調

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

  1. 用戶點擊登錄按鈕。授權請求被髮送到谷歌的OAuth服務器觸發用戶
  2. 的access_token,id_token
  3. OAuth的對話框,並一次性代碼返回
  4. 客戶端發送id_token和代碼服務器
  5. 服務器交換一個爲
  6. 的access_token
  7. 谷歌 - 時間代碼返回的access_token
  8. 服務器應確認 「在完全記錄」,以客戶

我已經有這個主要是工作,但我想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> 

數據回調參數允許我指定的函數,但是我只能得到它的全球職能的工作。

我能想到的唯一解決方法就是讓AngularJS在用戶登錄的情況下不斷輪詢服務器以進行更新,但是我想知道是否有辦法在事件結構中完成這項工作,這一切都是瞬間的。

無論這是否可行,我都非常感謝任何有關如何應對此問題的建議。請讓我知道,如果你有任何問題。謝謝!

回答

11

一堆搜索之後,我終於找到了我需要的東西在這裏:

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

我不能使用數據屬性來完成我需要的東西。我需要使用javascript API手動呈現按鈕。

+0

你是如何解決它的?我嘗試傳遞一個函數作爲callbalck的參考,但不工作。 – vintem 2013-07-03 19:30:41

+0

@VinTem對我來說,關鍵是傳遞一個代表元素ID的字符串,而不是角度(jqlite)元素本身。 – alalonde 2014-09-16 20:38:48

+0

爲了使這更容易,我發現這個很好的小角度指令,可以生成谷歌加按鈕,打開窗口並將訪問令牌返回到orgin窗口,然後您可以發送到服務器以獲取用戶詳細信息。 https://github.com/sirkitree/angular-directive.g-signin – craigvl 2015-02-05 03:53:43