使用来自iOS Bonjour(Yikes!)的Google Oauth2网络流

我正在构建一个iOS应用程序,要求用户通过Oauth2使用服务器端Web流程来授权Google API.我目前打开一个UIWebView启动oauth2流.

这在模拟器中工作正常,因为我将重定向URI设置为http:// localhost,并在我的本地机器上运行服务器.

但是,我想在设备上进行测试,同时仍然连接到在桌面上运行的服务器.为了做到这一点,我已经得到了应用程序来发现我的桌面地址(本地子网IP或bonjour地址,如http://foo.local.)连接到服务器.但是,Google Oauth2流程表示它不能使用本地URI作为重定向网址.

有没有办法解决?如果可能的话,我想不用混淆我的IOS设备的本地网络设置或代理请求.理想情况下,我也希望能够使用bonjour服务来发现服务器,因为我们有一个开发团队,我们的应用程序可以让您选择要连接到的本地网络上的哪台服务器.

选项?

解决方法

19/03/2013更新

如果服务器是必须有中间人,那么我调查最简单的方法是获取域名并使服务器公开. www.godaddy.com或任何域名提供商将获得每年约15美元的域名(如果有折扣,将会降低).

之后,只需搜索如何获取动态DNS,并将redirect_uri设置为已选择的域名.

否则我没有看到服务器的作用是在这里玩,只是为了oauth的目的.作为下面列出的第二种方法,设备可以直接与谷歌服务器通信,甚至在严重阻碍的防火墙后面. (令牌将被传递抛出标题栏).

所以在这里可能需要一些澄清.

本地主机服务器是否像中转站一样从Google驱动器中获取文件,然后再分配到iOS设备?或者什么样的网络架构想在这里实现?

==

18/03/2013更新

根据官方文件
https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

oauth有两种方法.使用localhost作为重定向只是一种方法.

另一个是使用这个字符串

urn:ietf:wg:oauth:2.0:oob

以替换具有本地主机的请求.

例如,使用localhost的先前请求(注意:区别在于以“redirect_uri =”开头的中间行)

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&
redirect_uri=http://localhost:9004&
response_type=code&client_id=812741506391-h38jh0j4fv0ce1krdkiq0hfvt6n5amrf.apps.googleusercontent.com

现在可以改为

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&
redirect_uri=urn:ietf:wg:oauth:2.0:oob&
response_type=code&client_id=812741506391-h38jh0j4fv0ce1krdkiq0hfvt6n5amrf.apps.googleusercontent.com

所以在模拟器中访问前者的URL应该等同于在实际设备中访问后者.

光环

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...