如何在google oauth2中使用刷新令牌获取访问令牌?

o75abkj4  于 2022-12-11  发布在  Go
关注(0)|答案(1)|浏览(312)

我在我的react nodejs应用程序中有google drive登录功能。当用户点击登录时,我使用Google oauth2来获取代码,并使用客户端ID和密码来获取访问令牌和刷新令牌。我将这些令牌和过期时间保存在我的数据库中。现在,我想使用刷新来获取访问令牌,这样我的访问令牌就不会过期。基本上,我希望用户始终处于登录状态。我正在创建一个对令牌的发布请求,以便使用刷新令牌获取访问令牌。以下是我的代码:

try{ 
 axios.post('/https://www.googleapis.com/oauth2/v3/token',{
  client_id: clientId,
  client_secret: secret,
  refresh_token: rToken
  grant_type: rToken
 })
 .then((response) => { 
  console.log("response = ", response)
 }).catch((error) => {
  console.log("error in getting token: = ", error)
 })
} catch(err) { 
 console.log("error = ", err)
}

我收到错误:连接电子连接拒绝
我尝试传递grant_type:refresh_token buy this给出了引用错误:未定义refresh_token
我哪里做错了?

7lrncoxx

7lrncoxx1#

首先,您正在使用axios.post()方法向Google OAuth2令牌终结点发出请求,但您提供的URL不正确。令牌终结点的正确URL是https://www.googleapis.com/oauth2/v3/token,而不是/https://www.googleapis.com/oauth2/v3/token。
以下示例说明如何正确地向Google OAuth2令牌端点发出请求,以使用刷新令牌获取访问令牌:

const axios = require('axios');

const clientId = 'your-client-id';
const secret = 'your-client-secret';
const rToken = 'your-refresh-token';

try {
  axios.post('https://www.googleapis.com/oauth2/v3/token', {
    client_id: clientId,
    client_secret: secret,
    refresh_token: rToken,
    grant_type: 'refresh_token'
  })
  .then((response) => {
    console.log("response = ", response);
  })
  .catch((error) => {
    console.log("error in getting token: = ", error);
  });
} catch(err) {
  console.log("error = ", err);
}

相关问题