您如何使用Google API getRequestHeaders()获取OAuth2访问令牌?

时间:2018-11-01 03:09:34

标签: google-api-nodejs-client google-auth-library

我正在使用googleapis npm库授权使用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上的StackOverflow上搜索了googleapis模块,但找不到关于getRequestHeaders方法的内容的任何文档。我尝试调用getRequestHeaders,但似乎没有返回带有访问令牌的credentials对象。

在这种情况下应如何使用getRequestHeaders的官方文档?

2 个答案:

答案 0 :(得分:3)

此新功能直接为您提供一个“标题”对象:

{ 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',
            },
        })

答案 1 :(得分:2)

const accessToken=oAuth2Client.getAccessToken()

这对我有用