2014-09-22 65 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的处理程序,因为我需要从链接到用户配置文件标记移开。