9

我正在使用googleapisnpm 库授权使用 OAuth2 访问我的 Gmail 帐户以发送电子邮件。我正在使用以下代码(TypeScript)来做到这一点:

const oAuth2Client = new google.auth.OAuth2(
  googleConfig.clientId,
  googleConfig.clientSecret
);

oAuth2Client.setCredentials({
  refresh_token: googleConfig.refreshToken
});

const accessTokenRetVal = (await oAuth2Client.refreshAccessToken()).credentials.access_token;
const accessToken = accessTokenRetVal || '';

此代码有效,但我收到以下消息:

(node:8676) [google-auth-library:DEP007] DeprecationWarning: The `refreshAccessToken` method has been deprecated, and will be removed in the 3.0 release of google-auth-library. Please use the `getRequestHeaders` method instead.

我在 Google、GitHub 上搜索了该googleapis模块、在 StackOverflow 上搜索,但我无法找到任何有关该getRequestHeaders方法构成要素的文档。我试过调用getRequestHeaders,但它似乎没有返回credentials带有访问令牌的对象。

是否有官方文档说明getRequestHeaders在这种情况下应如何使用?

4

2 回答 2

5

const accessToken=oAuth2Client.getAccessToken()

这对我有用

于 2019-03-13T07:01:42.423 回答
4

这个新函数直接为您提供了一个“标题”对象:

{ Authorization: 'Bearer xxxxxxxxx' }

所以你可以直接将它用作你的标题对象:

const authHeaders = await this.auth.getRequestHeaders();
yourfetchlibrary.get('https://......', {
            headers: authHeaders,
        })

或者提取授权部分:

const authHeaders = await this.auth.getRequestHeaders();
yourfetchlibrary.get('https://......', {
            headers: {
                'Authorization': authHeaders.Authorization,
                'Content-Type': 'application/json',
            },
        })
于 2018-11-05T08:15:32.833 回答