【问题标题】:com.google.a.a.a.a.l 400 Bad Request { "error" : "invalid_grant" } while inserting row in bigquerycom.google.a.a.a.a.l 400 Bad Request { "error" : "invalid_grant" } 在 bigquery 中插入行时
【发布时间】:2024-04-26 17:30:02
【问题描述】:

您好,我正在开发一个集成了BigQuery 的安卓应用程序。在BigQuery 表中插入记录时出现很多异常。我不是这方面的专家,所以如果你们能在这方面帮助我,那就太好了。

1。错误日志

  com.google.a.a.a.a.l: 400 Bad Request
  {
    "error" : "invalid_grant"
  }
         at com.google.a.a.a.a.h.a(TokenRequest.java:307)
         at com.google.a.a.b.a.a.b.f(GoogleCredential.java:384)
         at com.google.a.a.a.a.c.h(Credential.java:489)
         at com.google.a.a.a.a.c.a(Credential.java:217)
         at com.google.a.a.c.r.p(HttpRequest.java:859)
         at com.google.a.a.b.d.c.c(AbstractGoogleClientRequest.java:469)
         at com.test.utils.c.b(CommonUtility.java:3264)
         at com.test.services.NetworkChangeIntentService.onHandleIntent(NetworkChangeIntentService.java:72)
         at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:146)
         at android.os.HandlerThread.run(HandlerThread.java:61)

2。错误日志

  com.google.a.a.a.a.l: 400 Bad Request
  {
    "error" : "invalid_grant"
  }
         at com.google.a.a.a.a.h.a(TokenRequest.java:307)
         at com.google.a.a.b.a.a.b.f(GoogleCredential.java:384)
         at com.google.a.a.a.a.c.h(Credential.java:489)
         at com.google.a.a.a.a.c.a(Credential.java:217)
         at com.google.a.a.c.r.p(HttpRequest.java:859)
         at com.google.a.a.b.d.c.c(AbstractGoogleClientRequest.java:469)
         at com.test.utils.k.a(CommonUtility.java:3156)
         at com.test.utils.k.doInBackground(CommonUtility.java:3078)
         at android.os.AsyncTask$2.call(AsyncTask.java:288)
         at java.util.concurrent.FutureTask.run(FutureTask.java:237)
         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
         at java.lang.Thread.run(Thread.java:818)

【问题讨论】:

    标签: java android google-bigquery google-api-java-client google-api-client


    【解决方案1】:

    从您的应用程序失败的 TokenRequest 行,再加上在 HTTP 中的知识,400 错误代码表示格式错误的请求,我想说您的问题是您的应用程序正在尝试发送格式不正确的数据,或者是发送比预期更多/更少的数据。

    此外,您返回的错误是告诉您您有一个“invalid_grant”,因此这一定意味着应用程序收到了来自服务器的拒绝回复,因为没有特权(登录)做任何事情您的应用程序正在尝试执行此操作,很可能是由于格式错误的请求错误。

    阅读更多关于该主题的内容,似乎其他人也有类似的问题。

    invalid_grant trying to get oAuth token from google

    他们的解决方案是将 client_id 更改为电子邮件地址。

    这似乎是 Google API“一团糟”的问题。

    根据我的阅读,它似乎允许您第一次正确连接,然后使您的会话令牌无效,发回您现在收到的错误。

    因此,您需要采取的第一步是将 client_id 替换为与客户端 ID 关联的电子邮件地址。

    【讨论】:

    • 在您的应用程序的某个地方,您的代码正在尝试联系服务器。您的应用程序尝试发送的消息不正确,服务器拒绝了它。实际的格式错误的请求错误是错误代码:“400 Bad Request”
    【解决方案2】:

    invalid_grat 错误通常意味着您没有将请求标头上的正确授权令牌发送到经过身份验证的端点,或者您无法将凭据发送到您应该从中获取令牌的端点(在这种情况下我会说第二个选项)。

    【讨论】:

      最近更新 更多