Google API 到期日期是 1 小时,问题是我使用 API 是为了允许用户使用管理 SDK 功能(列出组、向组添加成员等)
没有人可以在一小时内完成任何一项,这将需要用户每天多次登录他们的帐户来管理他们的群组。如果您只想使用 Google 对用户进行身份验证,则 1 小时的到期日期比较合适。
如何增加它或有什么解决方法?我错过了什么吗?
您不能增加
access_code
的到期时间。
但是,如果当前访问令牌过期,您可以生成新的访问令牌!
authentication code
.refresh_token
使用验证码。access_token
获得 refresh_token
when
它过期了。我假设你有验证码。如果您没有代码,那么这里有一篇文章,介绍如何将 oauth 集成到您的 React 应用程序并从谷歌获取身份验证代码。您可以查看此以了解更多详细信息。
生成刷新和访问令牌:
替换有效载荷内的基本值(
code
,client_id
,client_secret
)。
let payload = {
grant_type: 'authorization_code',
code: '****SFJSDFJKAN-DF',
client_id: '******.googleusercontent.com',
client_secret: 'GOCS*******m5Qzg',
redirect_uri: 'http://localhost:3000',
};
axios
.post(`https://oauth2.googleapis.com/token`, payload, {
headers: {
'Content-Type': 'application/json;',
},
})
.then((res: any) => {
return res.data;
})
.then((response: any) => {
console.log('refresh token: ', response);
})
.catch((err) => console.log('err: ', err));
你会得到这样的回复:
{
access_token: "********KAjJZmv4xLvbAIHey",
expires_in: 3599,
id_token: "***************VeM7cfmgbvVIg",
refresh_token: "***************VeM7cfmgbvVIg",
scope: "https://www.googleapis.com/auth/gmail.readonly openid
.....
.....
https://mail.google.com/",
token_type: "Bearer",
}
保存您的刷新和访问令牌。 现在您可以使用刷新令牌生成新的访问令牌!
从刷新令牌生成新的访问令牌。
let payloadForAccessToken = {
grant_type: 'refresh_token',
refresh_token: '*******SFKNSK***',
client_id: '******.googleusercontent.com',
client_secret: '*****cxCsrf***8UUm5Qzg',
};
axios
.post(`https://oauth2.googleapis.com/token`, payloadForAccessToken, {
headers: {
'Content-Type': 'application/json;',
},
})
.then((res: any) => {
return res.data;
})
.then((res) => {
console.log('new token response: ', res);
})
.catch((err) => console.log('err: ', err));