gpt4 book ai didi

ios - 从 iOS + Bonjour 使用 Google Oauth2 webflow(赞!)

转载 作者:技术小花猫 更新时间:2023-10-29 10:39:50 25 4
gpt4 key购买 nike

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

这在模拟器中运行良好,因为我将重定向 URI 设置为 http://localhost 并在我的本地机器上运行了一个服务器。

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

有什么办法解决这个问题吗?如果可能的话,我不想弄乱我的本地网络设置或来 self 的 IOS 设备的代理请求。理想情况下,我还希望能够使用 bonjour 服务来发现服务器,因为我们有一个开发团队,我们的应用程序允许您选择要连接到本地网络上的哪个服务器。

选项?

最佳答案

2013 年 3 月 19 日更新

如果服务器是必须要有中间人,那么我认为最简单的方法就是抢一个域名,把服务器公开。 www.godaddy.com 或任何域名提供商将以每年约 15 美元的价格获得一个域名(如果有折扣会更低)。

然后只需搜索如何获取动态 DNS 并将 redirect_uri 设置为已选择的域名即可。

否则,如果只是为了 oauth 目的,我没有看到服务器在这里扮演的角色。作为下面列出的第二种方法,即使在防御严密的防火墙后面,设备也可以直接与谷歌服务器通信。 ( token 将通过抛出标题栏)。

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

本地主机服务器是否会像一个集线器一样从谷歌驱动器中提取文件,然后重新分发到 iOS 设备?或者想在这里实现什么样的网络架构?

==

2013 年 3 月 18 日更新

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

oauth有两种方式。使用本地主机作为重定向只是一种方式。

另一种是使用这个字符串

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 - 从 iOS + Bonjour 使用 Google Oauth2 webflow(赞!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com