2017-01-31 8 views
0

私はGoogleスプレッドシートを更新できるサービスアカウントを作成しました。このために、私はGoogleアカウントとサービスアカウントのメールIDを共有する必要がありました。今、私は、ユーザーの連絡先を更新できるようにしたい。資格情報を使用すると、元のユーザーではなくサービスアカウントのユーザーが更新されます。サービスアカウントを使用してこれを更新する方法はありますか?サービスアカウントを使用して別のユーザーのGoogle連絡先を更新する必要があります

答えて

0

いいえ連絡先は、更新するアカウントからの有効な認証セッションでのみ編集できます。

1

Google Contacts API version 3.0をお試しください。このAPIを使用すると、クライアントアプリケーションはユーザーの連絡先を表示および更新できます。

ただし、Google Contacts APIを使用できるようにするには、OAuth 2.0を使用してリクエストを承認する必要があります。それはあなたがあなたのGスイートドメイン内のユーザーのユーザーデータにアクセスする場合は、サービスにドメイン全体のアクセスを委任

、と述べた特徴と、サーバー間の相互作用のために、あなたはOAuth 2.0 for Server to Server Applicationsを使用することができますアカウント。

delegating domain-wide authority

:サービスアカウントにドメイン全体のアクセス権を委任した場合

、あなたは、ユーザーアカウントを偽装するsetServiceAccountUser方法でユーザーアカウントの電子メールアドレスを指定したいですGoogleCredential工場。

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("[email protected]") 
    .build(); 

適切な承認を取得した後、あなたはupdating contactsを続行することがあります。

はここでドメイン全体の権限を委任する方法についての例です。

希望に役立ちます!

+0

ありがとうございました。これは便利です。しかし、これはg-suiteアカウントを持っている場合にのみ機能しますか?サービスアカウントのメールIDと共有するだけで、シートと同様のことをすることができます。連絡先と同様のものは何ですか? –

関連する問題