我在我的 scala 应用程序中使用“Google 应用程序默认凭据”来与 google sheet api 对话。但是,我从 api 响应中收到“PERMISSION_DENIED”错误消息。
这是我的代码片段:
private val client: Sheets = {
val serviceAccountScopes = List(SheetsScopes.SPREADSHEETS_READONLY)
// https://developers.google.com/identity/protocols/application-default-credentials
val credential: GoogleCredential = GoogleCredential
.getApplicationDefault()
.createScoped(serviceAccountScopes.asJava)
new Sheets.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(applicationName)
.build()
}
val response = client.spreadsheets().values().get(spreadSheetId, "Total Cost!A2:C2").execute()
val values = response.getValues
这是错误消息:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [ { "domain" : "global", "message" : "请求的身份验证范围不足。", “原因”:“禁止”}],“消息”:“请求的身份验证范围不足。”,“状态”:“PERMISSION_DENIED”}
我确实在 google 开发者控制台中启用了 google sheet api,而我正在尝试阅读的工作表位于我的 google 驱动器下。
我唯一不确定的是google sheet api doc https://developers.google.com/sheets/guides/authorizing#OAuth2Authorizing没有提到api是否支持“Google Application Default Credentials”。
有什么我可能会错过或做错的吗?