我正在尝试针对Google+ API执行一些只读请求 - 主要是为了阅读一些活动。这是一个仅服务器应用程序 - 没有浏览器,也没有客户端交互。
我一直在阅读Google API支持的各种类型的身份验证,我相信我的用例映射到 Service Account方案 - 所以我一直在查看此示例:plus-serviceaccount-cmdline-sample。
现在,我创建了一个新的应用程序(在Google API控制台中),创建了服务帐户凭据,并且通常遵循示例的说明。 然而,我得到了:
400 Bad Request
{
"error" : "invalid_grant"
}
不确定我做错了什么 - 感谢任何帮助。 谢谢。
答案 0 :(得分: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密钥下载到项目中对于应用程序进行身份验证至关重要。