5

我正在使用 Google OAuth 在我的 Phonegap 应用程序中集成 google 登录。发生的情况是,在为我的应用程序创建客户端 ID 时,我必须选择“已安装的应用程序”,然后将应用程序类型选择为“其他”,因为我正在使用 Phonegap 创建我的应用程序。

这给了我两个重定向 URI,例如“ urn:ietf:wg:oauth:2.0:oob”和“ http://localhost”。我不选择使用“ urn:ietf:wg:oauth:2.0:oob”,因为它要求用户复制代码并将其放回应用程序。我拥有的另一个选项是重定向到本地主机。

这里的问题是,当我在 iPad 上时,如何将 URL 重定向到 localhost?我曾尝试使用不同的重定向 URI,但 Google 不允许我使用它们。它只坚持重定向到本地主机(或添加一些端口号),我没有其他办法。

有人对此有任何解决方法吗?有什么方法可以完成这项任务吗?我被困住了。请帮忙。

4

2 回答 2

4

您也可以使用重写规则。

例如,我需要 Google 的这个回调:http://local.dev/users/login-google

所以我在 Google Console 中设置了这个 URL:http://localhost/JUMP/local.dev/users/login-google

在 apache 中,一个简单的重定向:

RewriteEngine  on
RewriteRule    ^JUMP/(.+)$   http://$1 [R,L]
于 2014-05-07T09:49:34.993 回答
3

我最近遇到了同样的问题。我还需要为 Twitter API找出答案(在此处找到答案)。

对于谷歌,我找到了两种解决问题的方法。

  1. Google 将接受 localhost 回调 url。例如,如果您在 xampp 服务器上,并且您的重定向保存在下面,C:\xampp\htdocs\nozzle\callbacks\google.php那么您在请求中提供的重定向(以及在Google API 控制台中)将是:http://localhost/nozzle/callbacks/google.php问题已解决。
  2. 如果您在虚拟主机上开发:重定向到实时站点(或本地文件夹结构中的某个位置)以与 google api 通信,然后序列化该数据并将其发送到本地虚拟主机上的 url。

选项 2 需要更多解释。这是细分:

  • 我正在虚拟主机上进行本地开发。我的应用程序数据不在 localhost 文件夹 ( http://myapp.dev) 中。所以我需要另一个解决方案,让我仍然可以在虚拟主机上进行本地开发,但也可以向 Google API 发出请求。
  • 设置:第一次调用来自http://myapp.dev/但对于重定向,我使用我的实时服务器地址。经用户授权后,Google 会重定向回我的实时站点,在那里我对 api 进行了额外的调用。此信息返回(再次返回到我的实时站点),然后我序列化该信息并通过添加 ?data= 作为请求重定向到http://myapp.dev/callback并将序列化数据放在该调用的末尾。然后它被发送到我的虚拟主机站点,我用 $_REQUEST['data'] 检索数据,反序列化它,我很高兴。
  • 这似乎需要做很多工作,但对我和我的团队来说,在我们准备好上线之前继续在本地工作是值得的。

另外,我想您可以通过本地主机地址而不是实时地址来执行相同的过程,但我尚未对此进行测试。但是,如果您使用实时站点进行此操作,您的整个团队将能够从他们的本地虚拟主机发出相同的请求,只要它们也被虚拟主机http://myapp.dev

脚注:我正在使用socialmedia-oauth-login tool访问 Google API。

于 2013-06-04T18:20:15.153 回答