Googleドライブを使用して、作成しているWebサイトの準CMSとして機能させ、コンテンツ所有者がGoogleドライブを使用してコンテンツを編集できるようにしたいと思います。Googleドライブにアクセスでき(この投稿の執筆時点では、サービスアカウントはGoogleドライブに直接アクセスできません)、コンテンツ所有者とドキュメントを共有できる特定のユーザーアカウントを使用したいと思います。
APIとチュートリアルを読んだ後、委任で答えを見つけました:https ://developers.google.com/drive/delegation
このプロセスに関する私の主な問題は、WebサイトがGoogle Appsによって管理されていないため、「ドメイン全体の権限をサービスアカウントに委任する」で概説されている手順で混乱することです。この委任は、Googleを使用せずに処理できるはずです。アプリですが、Googleドライブで特定のユーザーアカウントの設定を検索したところ、なりすましを承認する機能が見つからないようです。
私が使用しているコードのスニペット:
static public function getService() {
$key = file_get_contents(GOOGLEAPI_KEYFILE);
$auth = new Google_AssertionCredentials(GOOGLEAPI_SERVICE_EMAIL, array(GOOGLEAPI_SCOPE), $key);
$auth->setPrn(GOOGLEAPI_IMPERSONATION);
self::$apiClient = new Google_Client();
self::$apiClient->setUseObjects(true);
self::$apiClient->setAssertionCredentials($auth);
return new Google_DriveService(self::$apiClient);
}
GOOGLEAPI_IMPERSONATION
は特定のユーザーアカウントであり、このコードを実行すると、例外は次のようになります。
OAuth2トークンの更新中にエラーが発生しました。メッセージ:'{"error": "access_denied"}
誰かが何か援助を提供しますか?委任に関してoAuthがどのように機能するかという基本的な概念を誤解していますか?