Google API - 如何将URL重定向到我的localhost

时间:2012-12-27 10:44:53

标签: ipad cordova login localhost

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

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

问题在于,当我在iPad上时,如何将URL重定向到localhost?我曾尝试使用不同的重定向URI,但谷歌并没有让我使用它们。它仅限于重定向到localhost(或添加一些端口号),我没有其他去。

有没有人对此有任何解决方法?有没有办法完成这项任务?我被卡住了。请帮忙。

2 个答案:

答案 0 :(得分:4)

您也可以使用重写规则。

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

所以我在Google控制台中设置了此网址:http://localhost/JUMP/local.dev/users/login-google

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

RewriteEngine  on
RewriteRule    ^JUMP/(.+)$   http://$1 [R,L]

答案 1 :(得分:3)

我最近遇到了同样的问题。我还需要弄清楚Twitter API(answer found here)。

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

  1. Google将接受localhost回调网址。例如,如果您在xampp服务器上,并且您的重定向保存在C:\xampp\htdocs\nozzle\callbacks\google.php下,那么您在请求中(以及在Google API Console中)的重定向将是:http://localhost/nozzle/callbacks/google.php Promblem已解决
  2. 如果您正在虚拟网站上进行开发:重定向到实际网站(或本地主机文件夹结构中的某个位置)与Google API进行通信,然后序列化该数据并将其发送给您您本地虚拟主机上的URL。
  3. 选项2需要更多解释。这是细分:

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

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

    进行了隐身。

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