如果唯一支持的流程是 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
将是我的移动应用程序中的内置 Web 服务器与应用程序内浏览器相结合,以便我可以提供 OAuth 重定向 URLhttp://localhost:XYZW
并在一次性授权代码到达时捕获它。但我不知道这是否适用于流行的移动平台(目前是 Android/iOS,我为这些平台找到了 Mongoose Web 服务器的端口)。
选项 2
注册自定义 URI 方案,例如myapp-oauth-scheme://
. 对于 RunKeeper,它似乎允许我重定向到此类自定义方案。而且我认为至少可以在 Android/iOS 上恢复我的应用程序,对吧?!WP8 / BB10 等其他平台呢?
选项 3
如果真的有必要,我只想走这条路:托管一个非常小的 Web 服务,用作 OAuth 重定向 URL 并保存任何传入的一次性授权代码。当用户被重定向时,他最终只会看到一个页面“现在请切换回应用程序”,然后应用程序会向网络服务询问它之前收到的一次性授权码。
所以毕竟,有没有更好的选择,你知道其中哪些可以在 Android/iOS 和其他平台上正常工作吗?
顺便说一句,我有一个基于 HTML 的应用程序 (PhoneGap),所以我什至不必使用外部浏览器。