【发布时间】:2013-03-05 11:51:00
【问题描述】:
如果唯一支持的流程是 HTTP 重定向,那么检索 OAuth 访问令牌的可移植方式是什么?例如,我想授权我的移动应用访问RunKeeper API:
- 应用打开浏览器地址为
https://runkeeper.com/apps/authorize?client_id=...&response_type=code&redirect_uri=MY_OWN_REDIRECT_URL - 用户点击允许访问,被重定向到
MY_OWN_REDIRECT_URL?code=ONE_TIME_AUTH_CODE - ???
- 应用程序通过向
https://runkeeper.com/apps/token发送第 2 步中的一次性授权代码和客户端密码的 POST 请求请求实际访问令牌
API 不支持 OAuth 设备配置文件(用户手动返回应用并输入几位数代码)。我正在考虑在这种情况下我的选择是什么,特别是因为我希望用户立即返回到我的应用程序。
选项 1
将是我的移动应用中的内置网络服务器与应用内浏览器相结合,以便我可以提供http://localhost:XYZW 的 OAuth 重定向 URL 并捕获一次性授权到达时的代码。但我不知道这是否适用于流行的移动平台(目前是 Android/iOS,我找到了适用于这些平台的 Mongoose Web 服务器的端口)。
选项 2
注册一个自定义 URI 方案,例如 myapp-oauth-scheme://。对于 RunKeeper,它似乎允许我重定向到此类自定义方案。而且我认为至少可以在 Android/iOS 上恢复我的应用程序,对吧?! WP8/BB10等其他平台呢?
选项 3
如果真的有必要,我只想走这条路:托管一个非常小的 Web 服务,用作 OAuth 重定向 URL 并保存任何传入的一次性授权代码。当用户被重定向时,他最终只会看到一个页面“现在请切换回应用程序”,然后应用程序会向网络服务询问它之前收到的一次性授权码。
毕竟,有没有更好的选择,你知道其中哪些可以在 Android/iOS 和其他平台上正常运行吗?
顺便说一句,我有一个基于 HTML 的应用程序 (PhoneGap),所以我什至不必使用外部浏览器。
【问题讨论】:
标签: android ios oauth authorization windows-phone-8