我正在开发一个使用OAuth的appengine应用。当然,我正在同时处理应用程序的多个版本 - 本地版本的开发,暂存版本和部署版本。
要使用这些,我需要三组独立的OAuth使用者密钥/机密,因为在提供商的网站上定义了身份验证回调。
我想知道提供商是否有办法为给定的应用提供多个密钥/秘密 - 这似乎比每次设置新应用更有意义。 (当然,它需要提供者实现这一点,但实现它似乎很自然,我还没有看到它。)
更一般地说,使用什么标准方法来解决这个问题 - 我的猜测是注册多个应用程序并在应用程序中使用逻辑来确定它是处于开发模式,登台还是部署。欢迎任何想法。
答案 0 :(得分:5)
我发现这是成为OAuth API客户端开发人员最烦人的部分之一。供应商没有理由不允许开发人员注册重定向(回调)URI以进行测试。
我见过的标准方法是允许您将一个或多个域列入白名单以进行回调/重定向。 Facebook有一些疯狂的设置,他们允许您通过使用应用程序配置文件中的各种链接的不同域来“注册”多个域。我没有太多运气。 Twitter是更好的实现之一,让您注册多个域。
在OAuth 2.0(草案18或更新版本)中,此主题得到了更好的处理。建议注册完整的URI,并能够注册多个回调,并在请求时动态选择您想要的回调。
要考虑的主要方面是您希望如何使用分段设置处理权限?您是希望能够重复使用现有批准还是希望将这些批准保持独立?此外,如果API提供特殊的仅客户端调用(例如客户端存储或管理工具),您是否希望阶段版本共享或保留自己的版本(以便测试不会使生产陷入混乱)。
最后,提供商应提供完整的开发环境,其中包括API客户端的测试工具。大部分都没有。
答案 1 :(得分:0)
从API提供商的角度来看,您的应用只是一个使用API的应用。通常没有“staging”API这样的东西,它不处理实时生产数据。无论你正在测试什么,你正在测试实时数据吗?
如果你能够注册几个不同的应用程序,例如不同的回调,那么我认为你的问题已经解决了。我的观点是消费者有责任将这些东西分开。