【发布时间】:2014-11-20 07:21:47
【问题描述】:
我已经看到关于 SO 的其他问题(here、here 和 here),但我对任何解决方案都不满意,所以我再问一次。我正在启动一个 Web 应用程序,它将利用来自多个提供商(Google、Facebook、Twitter、Yahoo)的 OAuth 进行身份验证。我正在努力寻找适用于本地开发环境和生产环境的配置。
我发现的主要解决方案是在每个提供者中注册多个应用,为每个提供者接收不同的消费者密钥和秘密:
“我的应用程序生产” - 带有到 http://www.myapp.com/callback 的回调 URI
“我的应用程序开发” - 带有到 http://local.myapp.com/callback 的回调 URI
在您的本地主机文件中添加一个条目,将local.myapp.com 指向127.0.0.1,并为您的应用程序进行一些配置,以根据环境使用正确的消费者密钥,您就可以开始了,对吧?
但我的应用程序是 responsive,我需要从多个其他设备(例如我的 iPhone 和 iPad)测试在我的 PC 上运行的开发环境,这两个设备都无法解析开发回调 URI。
假设我的网络上已经有一个 DNS 服务器,并且可以在那里添加 local.myapp.com 的条目而不是我的本地主机文件,现在可以从网络上的任何设备访问我的开发实例。
但我的开发团队都在同一个本地网络上运行。现在local.myapp.com 指向每个人的同一个IP。让我们回到在每个开发人员的计算机上设置主机文件,以便他们都可以在他们的工作站内独立工作。现在没有人可以再次从他们的 iPhone 测试他们的开发实例了。对于每个开发人员来说,向提供者注册应用程序以便他们可以指定唯一的回调 URI 似乎几乎不是正确的答案。
通常,当我为一个看似简单的问题提供复杂的解决方案时,通常意味着我在做一些根本错误的事情。我是否遗漏了有关 OAuth 的某些内容,它不打算像这样使用吗?我很想完全放弃 OAuth,只使用 OpenID(无需注册应用程序,并且可以从应用程序内指定回调 URI),但随后我失去了 Facebook 和 Twitter 中的两个大热门。我真的不需要任何用户的数据,如果它可用,那就太好了。有人可以说服我重新使用 OAuth 吗?
【问题讨论】:
-
只是为了测试对吧?为什么不将每个 Web 应用程序都作为虚拟目录?
-
我并没有真正理解你的意思。你能详细说明一下吗?
-
您找到解决方案了吗?我正在为完全相同的事情而苦苦挣扎; oauth 提供商不允许在源中使用通配符,所以我不能拥有
alice.dev.myapp.com和bob.dev.myapp.com但如果所有开发人员共享dev.myapp.com我不知道如何将平板电脑和手机指向正确的开发人员。为每个开发人员创建一个 oauth 入口点似乎是唯一的方法。 -
我在下面添加了我的手动解决方案。但我很想知道您是否找到了更好的方法。
标签: oauth twitter-oauth google-oauth facebook-oauth