我正在尝试刷新通过 Google OAuth 同意屏幕获得的令牌,而找到这方面的文档几乎是不可能的......
当我提出下面的请求时,我得到回复
Status Code: 400 - Bad Request
Error: "unsopported_grant_type"
需要帮助解决这个问题。
const URL = 'https://accounts.google.com/o/oauth2/token';
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
};
const payload = {
client_id: process.env.GOOGLE_AUTH_CLIENT_ID,
client_secret: process.env.GOOGLE_AUTH_CLIENT_ID,
refresh_token: process.env.REFRESH_TOKEN,
grant_type: 'refresh_token',
};
console.log('payload', payload);
const res = await fetch(URL, { method: 'post', headers, payload });
console.log('res', res);
const data = await res.text();
console.log('data', data);
在你的展示脚本中,做如下修改怎么样?
在您的脚本中,
client_secret: process.env.GOOGLE_AUTH_CLIENT_ID,
处,GOOGLE_AUTH_CLIENT_ID
(客户端 ID?)用作客户端密钥。请注意这一点。
const URL = 'https://accounts.google.com/o/oauth2/token';
const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
const payload = {
client_id: process.env.GOOGLE_AUTH_CLIENT_ID,
client_secret: process.env.GOOGLE_AUTH_CLIENT_SECRET, // Modified
refresh_token: process.env.REFRESH_TOKEN,
grant_type: 'refresh_token',
};
console.log('payload', payload);
const res = await fetch(URL, { method: 'POST', headers, body: new URLSearchParams(payload) }); // Modified
console.log('res', res);
const data = await res.text();
console.log('data', data);
当我使用我的值测试这个修改后的脚本时,我确认可以获得访问令牌。
在此修改中,
process.env.GOOGLE_AUTH_CLIENT_SECRET
用于检索客户端密钥。请根据您的实际情况修改GOOGLE_AUTH_CLIENT_SECRET
。
并且,需要将客户端 ID、客户端密钥、刷新令牌和授权类型的值作为表单数据发送。