Google AppEngine + PHP + Google Cloud数据存储:接收未经授权

时间:2013-10-22 15:44:43

标签: php google-app-engine google-cloud-datastore

我在Google App Engine上运行了一个PHP应用程序,我想在其中使用App Engine的数据存储区。

我正在使用google-api-php-client,在Google云端控制台上,我启用了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.'

可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

我相信你会遇到以下限制:service account authorization doesn't work with domain-restricted App Engine application

因此,您可以对问题进行评论,以便将您的应用程序列入白名单,请注意,根据您的应用程序的构建方式,可以允许您的域外帐户使用OAuth对您的应用程序进行身份验证。