javascript - 使用现有访问 token 使用 Google 的 gapi 库授权客户端 JS API 调用?

标签 javascript meteor access-token meteor-accounts google-api-js-client

一些背景

我使用 Meteor 作为应用程序框架,并使用 accounts-google 包来验证用户。使用 accounts 包非常好,因为它处理了获取访问 token 、在到期时刷新它们等所有脏工作。但是,我想要更多关于用户的个人资料信息,而不是 Meteor.user( ) 对象。

通过 Facebook,我能够轻松加载他们的客户端 JS 库,并使用 Meteor.user().services.facebook.accessToken 并遵循 API 上的文档进行图形 API 请求:

https://developers.facebook.com/docs/javascript/reference/FB.api

我的问题

在引用 Google 的 JavaScript API 时,文档指出在进行 API 调用时,请求会自动包含访问 token ,但仅在使用 gapi 处理授权请求时

https://developers.google.com/api-client-library/javascript/features/authentication#MakingtheAPIrequest

这在依赖第 3 方授权包时没有帮助(或者当您的应用程序在客户端之外处理 Google 的身份验证时)。

有没有办法在使用 gapi.client 库方法的请求中使用现有的访问 token ?

最佳答案

我为此纠结了很长时间,然后在这里找到了一个类似的问题:

Google OAuth2 - Using externally generated Access Token - With JS Client Library

但是,这个人已经知道必须做什么,只是不知道如何进行适当的调用,所以我找到它是相当幸运的。

解决方案

为了使用现有的访问 token 发出 gapi 请求,您必须调用:

    gapi.auth.setToken({
        access_token: "token_string"
    });

在发出客户请求之前。在 Meteor 中,您可以使用 Meteor.user().services.google.accessToken 代替上面的 “token_string”

关于该方法的文档在这里:

https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiauthsetToken

关于javascript - 使用现有访问 token 使用 Google 的 gapi 库授权客户端 JS API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796052/

相关文章:

javascript - 在 jQuery 中通过 Ajax 请求创建 Ajax 表单

javascript - Meteor 将 _proto_ 添加到数组中

ios - meteor :未知 Assets :private/apnDevKey.pem

javascript - 在 Meteor JS 中动态加载多个模板?

symfony - 服务中的 Simfony2 服务尝试调用方法 "get"

WSO2 身份服务器 JWT 访问 token

javascript - 如何在 ngModel 中转换为毫秒?

javascript - 编译时设置错误 react native "gradle"

javascript - 在选择/取消选择复选框时显示在 rails 中的文本区域中添加/删除值

oauth-2.0 - 谷歌云打印 : How long is the token good for (to submit jobs to cloud print)?