需要使用服务帐户更新其他用户的Google联系人

时间:2017-01-31 16:23:52

标签: google-api-java-client google-contacts

我创建了一个服务帐户,通过它我可以更新Google表格。为此,我不得不与服务帐户电子邮件ID共享谷歌表。现在,我希望能够更新用户的联系人。当我使用凭据时,它正在更新服务帐户用户而不是原始用户。有没有办法使用服务帐户更新?

2 个答案:

答案 0 :(得分:1)

您可能想尝试使用Google Contacts API version 3.0。此API允许客户端应用程序查看和更新​​用户的联系人。

但请注意,为了能够使用Google通讯录API,您需要使用OAuth 2.0来授权请求​​。而且,对于服务器到服务器的交互,您可以使用其中提到的OAuth 2.0 for Server to Server Applications

  

如果您要访问G Suite域中用户的用户数据,请将域范围内的访问权委托给服务帐户。

delegating domain-wide authority中:

  

如果您已授予对服务帐户的域范围访问权限,并且您要模拟用户帐户,请使用setServiceAccountUser工厂的GoogleCredential方法指定用户帐户的电子邮件地址。< / p>

请注意,您需要使用GoogleCredential对象在您的应用中调用Google API。

以下是有关如何委派域范围权限的示例:

GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(emailAddress)
    .setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12"))
    .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
    .setServiceAccountUser("user@example.com")
    .build();

获得适当的授权后,您可以继续updating contacts

希望有所帮助!

答案 1 :(得分:0)

没有。只能使用要更新的帐户中的有效身份验证会话编辑联系人。