如何使用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
相关产品推荐
相关产品推荐

