我编写了一个访问Google Maps Engine中存储的数据的PHP应用程序。我在API控制台中为Web应用程序创建了客户端ID 。因此,我可以授权我的应用使用Google API PHP client访问我的GME数据。到目前为止没问题。
我的网络应用程序,在某个特定时刻,调用系统二进制文件(ogr2ogr),它还需要访问存储在Google Maps Engine中的数据。所以,我假装使用GME driver并传递为配置参数:
但问题出现了:
当我使用以前的授权参数调用ogr2ogr时,它会返回HTTP 400错误:尝试多次使用OAuth2授权代码。看起来我传递的刷新令牌无效。
更深入地解决问题,我找到了一些我不理解的内容: Google API控制台允许您为Web应用程序创建客户端ID ,但在客户端应用程序和服务器端应用程序之间没有区别。 Google OAuth2文档也有所不同:
因此,理论上,我创建的客户端ID用于客户端应用程序,我将其与服务器端应用程序(PHP)一起使用
所以,我的问题:
非常感谢提前
答案 0 :(得分:1)
您是对的,您尝试使用客户端身份验证流程使用服务器端身份验证密钥,这将无法正常工作。您需要做的是将Access令牌传递给GDAL GME驱动程序。
您可以通过以下方式之一进行操作:
access=<your access token>
参数添加到与ogr2ogr一起使用的“文件名”中(以“GME:”开头的字符串)。这将使OAuth2流快捷,并且程序实际上不会进入AOuth2身份验证流程,而只是重新使用PHP脚本生成的身份验证令牌。这是有效的,因为您在同一台机器上和令牌到期之前发出请求。
中