node.js - NodeJS,如何使用谷歌 api 获取带有刷新令牌的新令牌?
问题描述
在 google api doc https://developers.google.com/sheets/api/quickstart/nodejs之后,找不到使用刷新令牌和 oauth2 客户端获取新令牌的方法。
医生说:
"The application should store the refresh token for future use and use the access token to access a Google API. Once the access token expires, the application uses the refresh token to obtain a new one."
如何使用带有 google oAuth2 Client 的刷新令牌获取新令牌?
到目前为止,我已经使用一个简单的帖子进行了管理
const getTokenWithRefresh = async (refresh_token) => {
return axios
.post("https://accounts.google.com/o/oauth2/token", {
client_id: clientId,
client_secret: clientSecret,
refresh_token: refresh_token,
grant_type: "refresh_token",
})
.then((response) => {
// TODO save new token here
console.log("response", response.data.access_token);
return response.data;
})
.catch((response) => console.log("error", response))
}
但理想情况下希望看到更清洁的方式来做到这一点。
解决方案
const {google} = require('googleapis')
const getTokenWithRefresh = (secret, refreshToken) => {
let oauth2Client = new google.auth.OAuth2(
secret.clientID,
secret.clientSecret,
secret.redirectUrls
)
oauth2Client.credentials.refresh_token = refreshToken
oauth2Client.refreshAccessToken( (error, tokens) => {
if( !error ){
// persist tokens.access_token
// persist tokens.refresh_token (for future refreshs)
}
})
}
refreshAccessToken()
已弃用(我真的很想知道为什么)。但由于它仍然有效,这仍然是我要走的路
推荐阅读
- list - Google Colaboratory 错误:“列表”对象没有属性“获取”
- laravel - Laravel 8 速率限制器缓存键
- python-3.x - 如何将“groupby([pd.Grouper(key='RENTAL_DATE', freq='D'), 'RENTED']).FEE.sum()”结果转换为矩阵
- html - 即使在使用“Pro”套件并且字体系列已更改为“Font Awesome 5 Pro”后,Font Awesome 仍将图标显示为正方形
- python - IndexError:列表索引超出范围使用谷歌视觉
- scala - ScalaMock :期望在一定公差范围内的 Double
- python - 我需要将python文件放在哪里才能全局访问?(蟒蛇)
- xml - 有没有像golang这样的xml序列化器
- flutter - 我只是想创建一个带有圆形按钮的登录,但它一直要求输入密钥。请看附图
- notepad++ - 在每行的空格之间添加逗号