gpt4 book ai didi

android - 适用于 Android/iOS 应用的 OAuth Web 流程

转载 作者:行者123 更新时间:2023-12-01 16:51:21 25 4
gpt4 key购买 nike

如果唯一支持的流程是 HTTP 重定向,那么检索 OAuth 访问 token 的可移植方式是什么?例如,我想授权我的移动应用访问 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
  • ???
  • 应用通过 POST 请求向 https://runkeeper.com/apps/token 请求实际访问 token 使用步骤 2 中的一次性授权码和客户端密码

  • 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),所以我什至不必使用外部浏览器。

    最佳答案

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

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

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

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

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

    关于android - 适用于 Android/iOS 应用的 OAuth Web 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15454873/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com