google-oauth - 来自 Google 凭据服务帐户的令牌 NULL
问题描述
我正在尝试使用以下代码检索我的 Google 服务帐户的凭据:
package function
import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.LambdaLogger
import com.amazonaws.services.lambda.runtime.RequestHandler
import pojo.Request
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
import com.google.api.services.sqladmin.SQLAdminScopes
import pojo.Response
class GoogleAuth implements RequestHandler<Request, Response> {
private LambdaLogger logger
@Override
Response handleRequest(Request input, Context context) {
logger = context.getLogger()
ClassLoader classLoader = getClass().getClassLoader()
File jsonCredentials = new File(classLoader.getResource("leads-cloud-function-service-account.json").getFile())
FileInputStream fis = new FileInputStream(jsonCredentials)
GoogleCredential credential = GoogleCredential.fromStream(fis).createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
credential.getClientAuthentication()
println("Thai test" + credential.getExpirationTimeMilliseconds())
print("This is the credential" + credential.getAccessToken())
return (new Response())
}
}
关于过期毫秒数和 AccessToken 的信息为空。有没有人经历过这个?
解决方案
因此,我通过在 getToken 之前添加以下命令自己解决了这个问题:
credential.refreshToken()
这在谷歌的网站上没有正确记录,但在添加它之后,它工作得很好,结果以实际值显示。
我遇到的其他一些错误是“com.google.common.io.ByteStreams.exhaust(Ljava/io/InputStream;)J”,为了解决它,我必须更正我使用的依赖项:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.31.1</version>
</dependency>
所以,请记住这一点!
推荐阅读
- algorithm - 跨多个阶段部分填充对象的设计模式
- javascript - 常量值从前一个返回
- python - 在 python 中存储和操作时间戳数组的最有效方法
- google-sheets - 以不同的格式呈现 2 列组/子项数据
- java - Google云端硬盘未显示目录中的所有文件
- ofbiz - OfBiz 后端 UI 是打算直接使用还是仅作为后备使用?
- java - 计算和初始化外部配置属性
- flutter - Flutter Getx List Object 数据在屏幕之间移动时发生变化
- python - 从嵌套列表中填充字典
- java - 我怎样才能阻止我的 gradle 导致这个错误?