1

我正在使用融合表 API 在我的表中插入/更新数据。上周我将我的 API 迁移到本示例中提到的新版本 v1 。但是现在,当我运行代码时,显示以下错误。

400 Bad Request
{
  "error" : "unauthorized_client"
}
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "unauthorized_client"
}
    at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
    at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:303)
    at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:323)
    at com.google.api.client.auth.oauth2.Credential.executeRefreshToken(Credential.java:607)
    at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:526)
    at com.google.api.client.auth.oauth2.Credential.intercept(Credential.java:287)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
    at com.prasanna.survey.pushapis.FusionPush.insertData(FusionPush.java:198)
    at com.prasanna.survey.pushapis.FusionPush.main(FusionPush.java:96)
Java Result: 1

如何调试此错误?

4

1 回答 1

3

如果您更改应用程序的 client_id,通常会发生此错误。

原因是,您已经拥有基于旧 client_id 的 Fusion API 的访问令牌。当您使用新的 client_id 请求刷新令牌(正如您在堆栈跟踪中看到的那样)时,您会收到非常无用的错误消息。

处理此问题的最简单方法是从系统中清除现有凭据,因此它必须接收干净的访问令牌。您可以使用 Google API Java 客户端以编程方式执行此操作,也可以只从系统中删除该文件。在我的 Ubuntu 机器上,它位于~/.credentials/<api-name>.json.

于 2013-05-13T20:25:41.820 回答