0

Google App Engine で実行している PHP アプリケーションがあり、そこで App Engine のデータストアを使用したいと考えています。

私は google-api-php-client を使用しています。Google Cloud Console で Google Cloud Datastore API を有効にし、新しいアプリを登録してプライベート証明書をダウンロードしました。

認証のために、私は次のコードを使用しています(xxxx実際の値があります):

const SERVICE_ACCOUNT_NAME = 'xxxx@developer.gserviceaccount.com';
const KEY_FILE = 'secure/privatekey.p12';

$client = new Google_Client();
$key = file_get_contents ( KEY_FILE );

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

$service = new Google_DatastoreService ( $client );
$datasets = $service->datasets;

$datasetsのように で使用する操作に関係$datasets->lookupなく、操作が許可されていないことを示す例外を受け取ります。

Uncaught exception 'Google_ServiceException' with message 'Error calling POST https://www.googleapis.com/datastore/v1beta1/datasets/<my-appengine-id>/lookup: (403) Unauthorized.'

何が間違っている可能性がありますか?

4

1 に答える 1

2

次の制限に達していると思われます:サービス アカウントの承認は、ドメイン制限された App Engine アプリケーションでは機能しません

そのため、問題についてコメントしてアプリケーションをホワイトリストに登録することができます。アプリケーションの構築方法によっては、ドメイン外のアカウントが OAuth を使用してアプリケーションで認証できるようになることに注意してください。

于 2013-10-22T19:11:23.140 に答える