ユーザーのウェブサイトのバックアップをGoogleドライブにアップロードするプログラムを実装しようとしています。それらのすべてが私のドメインにアカウントを持っているので、ここで説明されているように、私のアプリの権限のドメインwde委任を付与する手順を実行しました:https ://developers.google.com/drive/delegation
残念ながら、ドライブサービスオブジェクトをインスタンス化するためのサンプルコードは、多くのレベルで失敗します。ここにあります:
<?php
require_once "google-api-php-client/src/Google_Client.php";
require_once "google-api-php-client/src/contrib/Google_DriveService.php";
require_once "google-api-php-client/src/contrib/Google_Oauth2Service.php";
session_start();
$DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive';
$SERVICE_ACCOUNT_EMAIL = '<some-id>@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'privatekey.p12';
/**
* Build and returns a Drive service object
* authorized with the service accounts
* that acts on behalf of the given user.
*
* @param userEmail The email of the user.
* @return Google_DriveService service object.
*/
function buildService($userEmail) {
$key = file_get_contents(KEY_FILE);
$auth = new Google_AssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
array(DRIVE_SCOPE),
$key);
$auth->setPrn($userEmail);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
return new Google_DriveService($client);
}
?>
最初の明らかなエラーは、変数を設定しているのに、関数が定数を使用していることです。そのため、定数(KEY_FILE、SERVICE_ACCOUNT_EMAILなど)が機能するかどうかを確認するために、そこにあるべきものをハードコーディングすると、次のエラーが発生します。
Fatal error: Call to undefined method Google_AssertionCredentials::setPrn()
誰かがこれを修正する方法について何か提案やコメントがありますか?これらの問題をグーグルで検索すると、グーグルは自分のドキュメントへのリンクを次々と表示しますが、上記のように、まったく機能しません。
基本的に、ドメイン全体のアクセス権が付与されている「サービスアカウント」を使用して、ドライブサービスオブジェクトをインスタンス化する方法の例を見たいと思っていました。