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

如何通过Firebase Authentication获取Google API的刷新令牌

如何通过Firebase Authentication获取Google API刷新令牌

嘿,我来帮你搞定这个问题!默认情况下用Firebase的signInWithPopup登录Google时,只会返回访问令牌(accessToken),如果要拿到刷新令牌(refreshToken),得先给Google Auth Provider加上特定的权限范围,具体步骤如下:

1. 配置Google Auth Provider,添加offline_access权限

Google的API要求必须请求offline_access范围,才会在认证成功后返回刷新令牌。所以在初始化provider的时候,一定要加上这行关键代码:

var provider = new firebase.auth.GoogleAuthProvider();
// 核心配置:添加offline_access scope,这是获取刷新令牌的前提
provider.addScope('offline_access');

2. 完整的登录代码示例

结合Firebase官方代码框架,加上上面的配置后,就能在返回结果里直接拿到刷新令牌了:

firebase.auth().signInWithPopup(provider).then(function(result) { 
  // Google访问令牌,可直接用于调用Google API
  var accessToken = result.credential.accessToken; 
  // 重点!这里就是你要的Google刷新令牌
  var refreshToken = result.credential.refreshToken;
  // 当前登录的用户基础信息
  var user = result.user; 

  // 建议把refreshToken存储在安全的后端位置,用于后续自动刷新accessToken
  // ... 
}).catch(function(error) { 
  // 处理认证过程中的各类错误
  var errorCode = error.code; 
  var errorMessage = error.message; 
  // 触发错误的用户邮箱
  var email = error.email; 
  // 对应的AuthCredential对象
  var credential = error.credential;
  // ...
});

额外提醒

  • 刷新令牌是长期有效的(除非用户主动撤销权限,或者令牌被Google判定为不安全),绝对不要存在前端本地存储(比如localStorage),一定要存在后端数据库这类安全的位置。
  • 当accessToken过期后,你可以用这个refreshToken向Google的令牌端点请求新的accessToken,不用让用户重新登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:09:16