我在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.'
可能出现什么问题?
答案 0 :(得分:2)
我相信你会遇到以下限制:service account authorization doesn't work with domain-restricted App Engine application。
因此,您可以对问题进行评论,以便将您的应用程序列入白名单,请注意,根据您的应用程序的构建方式,可以允许您的域外帐户使用OAuth对您的应用程序进行身份验证。