【发布时间】:2015-01-14 15:35:51
【问题描述】:
我正在编写一个 PHP 应用程序来访问存储在 Google 地图引擎中的数据。我在 API 控制台中创建了一个 Web 应用程序的客户端 ID。因此,我可以通过Google API PHP client 授权我的应用访问我的 GME 数据。目前没问题。
我的网络应用程序在某个特定时刻调用系统二进制文件 (ogr2ogr),该二进制文件也需要访问存储在 Google 地图引擎中的数据。所以,我假装使用GME driver 并作为配置参数传递:
- 客户端 ID、客户端密码和 API 密钥(来自我在 API 控制台中创建的客户端 ID)
- 身份验证令牌和刷新令牌(来自授权响应)
但是问题来了:
当我使用之前的授权参数调用 ogr2ogr 时,它返回一个 HTTP 400 错误:尝试多次使用 OAuth2 授权码。看起来我传递的刷新令牌无效。
深入研究问题,我发现了一些我不明白的地方:Google API 控制台允许您创建Web 应用程序的客户端 ID,但 可以客户端应用程序和服务器端应用程序之间没有区别。谷歌 OAuth2 文档使这一点与众不同:
因此,理论上,我创建的客户端 ID 用于客户端应用程序,并且我将它与服务器端应用程序 (PHP) 一起使用
所以,我的问题:
- 我如何在 API 控制台中创建一个客户端 ID,我可以同时使用它:PHP 应用程序和 ogr2ogr 二进制文件(我已经使用 已安装应用程序的客户端 ID 测试了 ogr2ogr 二进制文件 它运行良好,但该客户端 ID 不能用于 PHP 应用程序)。
- 为什么 API 控制台不会像文档那样区分客户端 Web 应用程序和服务器端 Web 应用程序的客户端 ID?显然,我误解了一些东西。例如,this tutorial 将 Web 应用程序的客户端 ID 用于 PHP 代码(但仅用于 Web 应用程序,而不用于调用也需要授权的另一个程序)
在此先感谢
【问题讨论】:
标签: google-oauth gdal