【问题标题】:OAuth web flow for Android/iOS app适用于 Android/iOS 应用的 OAuth Web 流程
【发布时间】:2013-03-05 11:51:00
【问题描述】:

如果唯一支持的流程是 HTTP 重定向,那么检索 OAuth 访问令牌的可移植方式是什么?例如,我想授权我的移动应用访问RunKeeper API

  1. 应用打开浏览器地址为https://runkeeper.com/apps/authorize?client_id=...&response_type=code&redirect_uri=MY_OWN_REDIRECT_URL
  2. 用户点击允许访问,被重定向到MY_OWN_REDIRECT_URL?code=ONE_TIME_AUTH_CODE
  3. ???
  4. 应用程序通过向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


    【解决方案1】:

    您可以使用 socialauth android 将 runkeeper api 集成到您的应用中。身份验证后,您将能够获得访问令牌。

    然后您可以使用访问令牌来调用 runkeeper 的各种功能,例如获取活动。您可以查看 runkeeper 文档来进行调用。

    【讨论】:

      【解决方案2】:

      您可以结合选项 1 和 3 以获得可移植性和 UX 的最佳组合:

      为身份验证提供应用内 Web 视图,但不要在设备上运行本地 httpd,而是为重定向目标使用最小 Web 服务。这样用户就永远不会离开您的应用程序,并且您的登录页面不需要告诉他们手动返回它。您的应用可以从您的 Web 服务中检索访问令牌,并在其 URL 更改后立即关闭 WebView。

      顺便说一句,我工作的公司 Temboo 提供了一个您可以使用的最小 Web 服务,而不是构建和托管自己的 Web 服务。查看我们的OAuth for RunKeeper 助手。我们提供了一个回调服务,您可以将其用于重定向 url,它将为您存储身份验证令牌。我们还可以选择存储您的 RunKeeper 凭据,这样您就不必将它们与您的应用程序一起分发,并且可以在不推送客户端更新的情况下更新或使它们失效。

      我们的Android SDK 还可以为您规范对 RunKeeper API 的其余部分以及 100 多个其他 API 的访问。


      刚刚看到您的编辑。如果您已经在使用 WebView,那就更好了。让用户留在应用程序中,跳过自定义 URL 方案,跳过应用程序内服务器的开销,只需使用一个小型 Web 服务来捕获身份验证令牌。这在 iOS 和任何其他可以提供等效 WebView 的平台上也可以正常工作。

      【讨论】:

        猜你喜欢
        • 2015-02-21
        • 2012-09-29
        • 2019-01-16
        • 2015-11-07
        • 2012-10-09
        • 2012-10-15
        • 2011-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多