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

如何使用google-auth-library-java替换废弃的GoogleCredential获取访问令牌

替代实现方案

GoogleCredential 废弃后,官方推荐使用 UserCredentials 类实现相同的凭证生成逻辑,你已有的 client secrets 文件和 refresh token 可以直接复用,无需重新走授权流程。

步骤1:确认依赖引入(Gradle 示例,Maven 可自行对应坐标)

implementation 'com.google.auth:google-auth-library-oauth2-http:1.20.0'
implementation 'com.google.oauth-client:google-oauth-client:1.35.0'

步骤2:Kotlin 实现代码

import com.google.auth.oauth2.UserCredentials
import com.google.auth.http.HttpCredentialsAdapter
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets
import com.google.api.client.http.javanet.NetHttpTransport
import com.google.api.client.json.gson.GsonFactory
import java.io.FileInputStream
import java.io.InputStreamReader

// 1. 加载你的client secrets json文件
val clientSecrets = GoogleClientSecrets.load(
    GsonFactory.getDefaultInstance(),
    InputStreamReader(FileInputStream("你的client_secret.json本地路径"))
)

// 2. 构建凭证,传入已有的refreshToken
val userCredentials = UserCredentials.newBuilder()
    .setClientId(clientSecrets.details.clientId)
    .setClientSecret(clientSecrets.details.clientSecret)
    .setRefreshToken(refreshToken) // 你之前留存的refreshToken直接传入
    .build()

// 3. 主动刷新凭证,和原代码的refreshToken()效果完全一致
userCredentials.refreshIfExpired()

// 4. 调用Gmail API时,用HttpCredentialsAdapter包装凭证即可
val gmailService = Gmail.Builder(
    NetHttpTransport(),
    GsonFactory.getDefaultInstance(),
    HttpCredentialsAdapter(userCredentials)
)
    .setApplicationName("你的应用名称")
    .build()

说明

  • 生成的 userCredentials 支持自动刷新access token,不需要手动处理过期逻辑,功能和原废弃的GoogleCredential完全一致
  • 如需直接获取access token,调用 userCredentials.accessToken.tokenValue 即可,和原credentials.accessToken用法对应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:48:04