5

我在我的 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”。

有什么我可能会错过或做错的吗?

4

0 回答 0