6

https://code.google.com/p/google-api-php-client/にあるクライアント ライブラリを使用して、次の PHP コードを実行しています。このコードではエラーは発生しませんが、 を呼び出すgetAccessToken()と null が返されます。

個人のカレンダーでこのサービス アカウントへのアクセスを許可し、API コンソールを介してプロジェクトへのフル アクセスを許可しました。

何か案は?

require_once 'google-api-php-client/src/Google_Client.php';

const CLIENT_ID = 'blahblahblah';
const SERVICE_ACCOUNT_NAME = 'blahblahblah@developer.gserviceaccount.com';
const KEY_FILE = 'path/to/privatekey.p12';

$google_client = new Google_Client(); // created only to initialized static dependencies
$client = new Google_OAuth2(); // you really just need Google_OAuth2

$key = file_get_contents(KEY_FILE);  

$client->setAssertionCredentials(
    new Google_AssertionCredentials(
        SERVICE_ACCOUNT_NAME,
        array('https://www.googleapis.com/auth/calendar'),
        $key
    )
);

var_dump($client->getAccessToken());
4

1 に答える 1

3

何らかの理由で、これはうまくいくように見えました:

require_once 'google-api-php-client/src/Google_Client.php';

const CLIENT_ID = 'blahblahblah';
const SERVICE_ACCOUNT_NAME = 'blahblahblah@developer.gserviceaccount.com';
const KEY_FILE = 'path/to/privatekey.p12';
const CALENDAR_SCOPE = "https://www.googleapis.com/auth/calendar";

$key = file_get_contents(KEY_FILE);
$auth = new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME,
    array(CALENDAR_SCOPE),
    $key
);

$client = new Google_Client();
$client->setScopes(array(CALENDAR_SCOPE));
$client->setAssertionCredentials($auth);
$client->getAuth()->refreshTokenWithAssertion();
$accessToken = $client->getAccessToken();

$client->setClientId(CLIENT_ID);

誰かがなぜこれが機能したのか説明できる場合は、この回答を編集するかコメントしてください!

于 2013-08-16T01:24:37.493 に答える