如何自动获取OAuth 2.0令牌并重新打开我的应用?

时间:2015-07-07 23:38:34

标签: android oauth-2.0

我正在使用Delivery.com API构建我的应用程序,而我目前对OAuth流程如何工作的理解是:

  1. 我将用户重定向到浏览器,他们明确登录到他们的帐户。我在这个过程中提供了redirect_uri。
  2. 登录后,用户将被重定向到带有访问令牌的redirect_uri
  3. 我以某种方式获取访问令牌,并使用它来验证我的应用程序中的未来操作
  4. 这是我正在努力的第3步 - 我已经设置了intent-filterManifest.xml,以便我正确地打开浏览器进行第1步,并且用户被正确地重定向回我的步骤2中的应用程序。但是这留下了两个问题:

    1. 重新打开我的应用程序的redirect_uri在后台执行 - 浏览器永远不会关闭。我假设有一个简单的解决方法,但无法找到它。
    2. 如何获取访问令牌?唯一的解决方案是重定向到另一个显示令牌的网页,然后让用户手动复制并粘贴回我的应用程序?或者我可以以某种方式自动获取令牌,重新打开我的应用程序,然后继续吗?
    3. 编辑:我能够让这个工作 - 我不确定是什么导致了上面第1点的问题,但是经过几次来回改变后它开始工作我最初拥有它。对于今后对此进行调查的任何人,我必须在<action android:name=android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="myapp.randomname" android:host="my_url"/> 中包含以下所有元素才能使其正常工作:

      Uri data = getIntent().getData()

      关于问题#2,我能够使用data.getQueryParameter("fieldname")解析响应,然后调用{{1}}。

1 个答案:

答案 0 :(得分:0)

您可以直接在应用中使用WebView并通过OAuth获取OAuth,而不是启动外部浏览器和使用意图过滤器。