使用Google的gapi库与现有访问令牌进行授权的客户端JS API调用?

时间:2015-03-01 16:34:41

标签: javascript meteor access-token meteor-accounts gapi

一些背景

我正在使用Meteor作为应用程序框架,我使用accounts-google包来验证用户身份。使用帐户包是非常好的,因为它处理获取访问令牌的所有脏工作,到期时刷新它们等等。但是,我想要有关用户的更多配置文件信息,而不是Meteor.user()对象中填充的信息。

通过Facebook,我可以轻松加载客户端JS库并使用Meteor.user().services.facebook.accessToken生成图API请求并遵循API文档:

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

我的问题

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

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

当依赖第三方授权包时(或当您的应用程序远离客户端处理Google的身份验证时),这没有用。

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

1 个答案:

答案 0 :(得分:4)

我在这方面挣扎了很长时间,我在这里找到了类似的问题:

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

然而,这个人已经知道必须做什么,而不是如何拨打适当的电话,所以我发现它是相当幸运的。

解决方案

要使用现有访问令牌发出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