我创建了一个服务帐户,通过它我可以更新Google表格。为此,我不得不与服务帐户电子邮件ID共享谷歌表。现在,我希望能够更新用户的联系人。当我使用凭据时,它正在更新服务帐户用户而不是原始用户。有没有办法使用服务帐户更新?
答案 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)
没有。只能使用要更新的帐户中的有效身份验证会话编辑联系人。