2014-09-22 64 views
0

我使用meteor創建了一個網頁,其中包含一個Google網上論壇下拉列表供您選擇,一旦選定,Google聯繫人將顯示。如何在流星中使用Google Contacts API?

我對Google的API使用HTTP.call POST並使用mongoDB中的accessToken進行測試,但是當它在一段時間過期後使用該令牌時。我考慮實現身份驗證流程,但由於Google上沒有流星的示例代碼,因此它變得非常複雜。我是nodeJS,Javascript和Meteor的新手。我是否以這種錯誤的方式去做?我將如何在流星中實現這一點?

https://developers.google.com/accounts/docs/OAuth2?csw=1#expiration

回答

3

要對付的accessToken到期,你需要從谷歌獲得refreshToken。通過這個refreshToken,您可以通過簡單的HTTP POST向Google的API獲取新的accessToken。 Here是Google的相關文檔。要獲得refreshToken,您需要請求離線訪問,並且可能還需要強制批准提示,詳見此SO post

forceApprovalPrompt: {google: true}, 
requestOfflineToken: {google: true}, 

我建議使用流星的HTTP package實現上述所有。所有的工具都在那裏。你可能已經想通了:

var result = HTTP.post(
    "https://www.googleapis.com/oauth2/v3/token", 
    { 
     params: { 
     'client_id': config.clientId, 
     'client_secret': config.secret, 
     'refresh_token': user.services.google.refreshToken, 
     'grant_type': 'refresh_token' 
     } 
    }); 

    //Do some error checking here 

    var newAccessToken = result.data.access_token; 
  1. refresh_token - 從授權 交換代碼返回的刷新令牌。
  2. CLIENT_ID - 從 開發者控制檯獲得的客戶端ID。
  3. client_secret - 從 開發人員控制檯獲取的客戶端機密。
  4. grant_type - 按照OAuth 2.0 規範中的定義,此字段必須包含值refresh_token。
  5. result.data將與以下

    { 「的access_token」 JSON對象: 「1/fFBGRNJru1FQd44AzqT3Zg」, 「expires_in」:3920, 「token_type」: 「承載」, }

0

看一看這個包了一個小包裝,不自動刷新爲您提供: here

其實我結束了建設自己的身份驗證流程與OAuth的處理程序,因爲我需要從鏈接到用戶配置文件標記移開。