0

我正在尝试对 Google+ API 执行一些只读请求 - 主要是为了读取一些活动。这是一个仅限服务器的应用程序 - 没有浏览器,也没有客户端交互。

我一直在阅读 Google API 支持的各种类型的身份验证,并且我相对确定我的用例映射到服务帐户场景- 所以我一直在查看这个示例:plus-serviceaccount-cmdline-sample

现在,我创建了一个新应用程序(在 Google API 控制台中),创建了服务帐户凭据,并且通常按照示例的说明进行操作。然而,我得到:

400 Bad Request
{
  "error" : "invalid_grant"
}

不知道我做错了什么 - 任何帮助表示赞赏。谢谢。

4

1 回答 1

1

使用服务帐户示例获取“invalid_grant”错误的最常见方法是忘记将注册的电子邮件地址插入到您的代码中。

转到https://developers.google.com/console,然后转到 API Access 并查看您注册服务帐户的位置。

您应该会看到一个标记为如下所示的字段

Email address: XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXX@developer.gserviceaccount.com

您需要复制此值并将其插入

plus-serviceaccount-cmdline-sample/src/main/java/com/google/api/services/samples/plus/serviceaccount/cmdline/PlusServiceAccountSample.java

在以下行中:

/** E-mail address of the service account. */
private static final String SERVICE_ACCOUNT_EMAIL = "Enter service account e-mail from "
    + "https://code.google.com/apis/console/?api=plus into SERVICE_ACCOUNT_EMAIL in "
    + PlusServiceAccountSample.class;

所以它看起来像这样:

/** E-mail address of the service account. */
private static final String SERVICE_ACCOUNT_EMAIL = "XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXX@developer.gserviceaccount.com";

这一点以及将 .p12 密钥下载到项目中对于应用程序进行身份验证至关重要。

于 2013-06-11T14:56:04.577 回答