You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript为Google Calendar API获取新的access_token

如何使用JavaScript通过Refresh Token获取Google Calendar的新Access Token?

看起来你已经搞定了初始授权拿到refresh token的环节,接下来刷新access_token其实很简单,只需要向Google的OAuth2令牌端点发起POST请求,带上你的refresh token和应用凭证就行。

下面是两种常用的实现方式,和你现有代码风格对齐:

jQuery版本(和你现有代码一致)

// 替换成你实际的参数
const REFRESH_TOKEN = '你之前获取到的refresh_token';
const CLIENT_ID = '你的应用client_id';
const CLIENT_SECRET = '你的应用client_secret';

$.ajax({
  url: 'https://www.googleapis.com/oauth2/v4/token',
  type: 'POST',
  data: {
    'refresh_token': REFRESH_TOKEN,
    'client_id': CLIENT_ID,
    'client_secret': CLIENT_SECRET,
    'grant_type': 'refresh_token' // 这个值固定为refresh_token,告诉Google我们要刷新令牌
  },
  success: function(response) {
    // 新的access_token就在response里,直接用它调用Calendar API就行
    console.log('新的Access Token:', response.access_token);
    // expires_in是令牌的有效期(秒,一般是3600,也就是1小时),记得提前刷新
    console.log('令牌有效期(秒):', response.expires_in);
  },
  error: function(error) {
    console.error('刷新令牌失败:', error.responseJSON);
    // 常见错误比如refresh_token失效(用户撤销了权限),或者参数错误
  }
});

原生JavaScript Fetch版本

如果你不想依赖jQuery,用原生fetch也能实现:

const REFRESH_TOKEN = '你之前获取到的refresh_token';
const CLIENT_ID = '你的应用client_id';
const CLIENT_SECRET = '你的应用client_secret';

fetch('https://www.googleapis.com/oauth2/v4/token', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams({
    refresh_token: REFRESH_TOKEN,
    client_id: CLIENT_ID,
    client_secret: CLIENT_SECRET,
    grant_type: 'refresh_token'
  })
})
.then(response => response.json())
.then(data => {
  if (data.error) {
    console.error('刷新失败:', data.error_description || data.error);
    return;
  }
  console.log('新的Access Token:', data.access_token);
  console.log('令牌有效期:', data.expires_in);
})
.catch(error => console.error('请求出错:', error));

重要提醒!

千万不要在前端代码里直接写client_secret!这是非常危险的,任何人查看你的页面源码都能拿到这个密钥,进而冒充你的应用操作用户数据。

正确的做法是:搭建一个后端接口,让前端把refresh token传给你的后端,由后端来发起这个刷新令牌的请求(后端安全存储client_secret),然后把新的access_token返回给前端。这样既能保护你的应用凭证,也符合OAuth2的安全规范。

内容的提问来源于stack exchange,提问作者Shahen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:35:05