Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/iOS应用程序的OAuth web流_Android_Ios_Oauth_Authorization_Windows Phone 8 - Fatal编程技术网

Android/iOS应用程序的OAuth web流

Android/iOS应用程序的OAuth web流,android,ios,oauth,authorization,windows-phone-8,Android,Ios,Oauth,Authorization,Windows Phone 8,如果唯一受支持的流是HTTP重定向,那么检索OAuth访问令牌的可移植方式是什么?例如,我想授权我的移动应用程序访问: 应用程序打开带有地址https://runkeeper.com/apps/authorize?client_id=...&response_type=code&redirect_uri=MY_OWN_REDIRECT_URL 用户单击以允许访问,被重定向到MY\u OWN\u REDIRECT\u URL?code=ONE\u TIME\u AUTH\u code ? 应用程序

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

  • 应用程序打开带有地址
    https://runkeeper.com/apps/authorize?client_id=...&response_type=code&redirect_uri=MY_OWN_REDIRECT_URL
  • 用户单击以允许访问,被重定向到
    MY\u OWN\u REDIRECT\u URL?code=ONE\u TIME\u AUTH\u code
  • 应用程序请求实际访问令牌,并向
    https://runkeeper.com/apps/token
    带有步骤2中的一次性授权代码和客户机密
  • API不支持OAuth设备配置文件(用户手动返回应用程序并输入几位数字代码)。我在想在这种情况下我的选择是什么,特别是因为我希望用户立即返回到我的应用程序


    选择1 将是我的移动应用程序中的一个内置web服务器,与应用程序内浏览器相结合,这样我就可以提供一个
    OAuth重定向URLhttp://localhost:XYZW
    并在其到达时捕获一次性授权代码。但我不知道这是否适用于流行的移动平台(Android/iOS目前,我找到了这些平台的Mongoose web服务器端口)

    选择2 注册一个自定义URI方案就像
    myapp oauth方案://
    。对于RunKeeper,它似乎允许我重定向到此类自定义方案。我想,至少在Android/iOS上,恢复我的应用程序是可能的,对吧?!其他平台如WP8/BB10呢

    选择3 这是我只想在真正必要的情况下走的路:托管一个非常小的web服务,用作OAuth重定向URL并保存任何传入的一次性授权代码。当用户被重定向时,他最终只会看到一个页面“now please switch back to the app”(现在请切换回应用程序),然后应用程序会向web服务请求它以前收到的一次性授权码


    那么,毕竟,还有更好的选择吗?你知道其中哪一个可以在Android/iOS和其他平台上正常工作吗


    顺便说一句,我有一个基于HTML的应用程序(PhoneGap),因此我甚至不必使用外部浏览器。

    您可以将选项1和3结合起来,以实现便携性和用户体验的最佳组合:

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

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

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



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

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

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