从PHP应用引擎访问谷歌数据存储或数据存储API


Accessing Google Datastore or Datastore API from PHP App Engine

我试图使用谷歌数据存储从PHP应用引擎在谷歌云环境。这个过程似乎不像云存储那样无缝,所以我将使用Datastore REST API。

在文档中有一个地方,你可以对数据存储API做一个测试请求:https://cloud.google.com/datastore/docs/apis/v1beta2/datasets/lookup#try-it

我遇到的问题是我想在没有OAuth的情况下做到这一点(在上面的链接中有一个选项)。但是,当我这样做时,我得到以下错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

从请求详细信息中,我看到了以下HTTP请求签名:POST to https://www.googleapis.com/datastore/v1beta2/datasets/MY_PROJECT_ID/lookup?key={YOUR_API_KEY} .

当我使用我的服务器API密钥从谷歌云"API和认证"凭据,我得到这个:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "HTTP Basic Authentication is not supported for this API",
        "locationType": "header",
        "location": "Authorization"
      }
    ],
    "code": 401,
    "message": "HTTP Basic Authentication is not supported for this API"
  }
}

我不太确定{YOUR_API_KEY}应该是在这种情况下,如果它不是服务器密钥。

我如何解决这个问题,并访问数据存储API没有OAuth?

谢谢。

我建议您使用这个库从PHP访问数据存储

https://github.com/tomwalder/php-gds

  • 有文档
  • 它支持本地协议缓冲区访问-不需要在REST或JSON服务中使用的身份验证周期(即。)
  • 和远程使用的JSON API
  • 支持本地(开发)数据存储

其他几个SO问题参考:

  • 可以谷歌云数据存储访问php?
  • 如何连接谷歌应用引擎(PHP)与云数据存储?

数据存储API要求所有调用都需要一个经过身份验证的用户,因此您需要使用OAuth。

你可以使用PHP的API客户端库来为你处理认证细节:https://developers.google.com/api-client-library/php/guide/aaa_overview

API密钥机制适用于不需要身份验证用户的API。