一些背景
我使用 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 处理授权请求时。
这在依赖第 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/