【问题标题】:How to use Google Contacts API in meteor?如何在流星中使用 Google 联系人 API?
【发布时间】:2015-06-21 12:24:49
【问题描述】:

我正在使用流星创建一个网页,其中包含可供选择的 Google 群组下拉列表,一旦选择,就会显示 Google 联系人。

我正在使用 HTTP.call POST 到 Google 的 API 并使用来自 mongoDB 的 accessToken 进行测试,但是当我在一段时间后使用该令牌时它会过期。我研究了实现身份验证流程,但它变得非常复杂,因为谷歌上没有流星的示例代码。我是 nodeJS、Javascript 和 Meteor 的新手。我会以错误的方式解决这个问题吗?我将如何在流星中实现这一点?

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

【问题讨论】:

    标签: meteor access-token google-contacts-api


    【解决方案1】:

    为处理 accessToken 的过期问题,您需要从 Google 获取 refreshToken。使用此 refreshToken,您可以在必要时通过对 Google API 的简单 HTTP POST 获取新的 accessToken。 Here 是来自 Google 的相关文档。要获取refreshToken,您需要请求离线访问,并且可能还需要强制提示批准,详见SO post

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

    我建议使用 Meteor 的 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 - 从 开发者控制台。
    3. client_secret - 从 开发者控制台。
    4. grant_type - 在 OAuth 2.0 中定义 规范,该字段必须包含 refresh_token 的值。
    5. result.data 将是一个带有以下内容的 JSON 对象

      { "access_token":"1/fFBGRNJru1FQd44AzqT3Zg", “expires_in”:3920, "token_type":"承载者", }

    【讨论】:

      【解决方案2】:

      看看这个包,它是一个为你自动刷新的小包装器: here

      实际上,我最终使用 oauth 处理程序构建了自己的身份验证流程,因为我需要摆脱链接到用户配置文件的令牌。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多