1

一些背景

我使用 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

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

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

4

1 回答 1

5

我为此苦苦挣扎了很长时间,并且在这里找到了类似的问题:

Google OAuth2 - 使用外部生成的访问令牌 - 使用 JS 客户端库

不过,这个人已经知道该做什么了,只是不知道如何打出合适的电话,所以我找到了它是相当幸运的。

解决方案

为了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

于 2015-03-01T16:34:41.380 回答