【问题标题】:Android : Handle OAuth callback using intent-filterAndroid:使用意图过滤器处理 OAuth 回调
【发布时间】:2011-02-09 13:59:27
【问题描述】:

我正在构建一个需要 OAuth 的 Android 应用程序。除了处理来自 Yahoo 的回调之外,我拥有所有 OAuth 功能。我的 AndroidManifest.xml 中有以下内容:

www.test.com 将替换为我拥有的域。看来:

  • 当我单击页面上的链接时会触发此过滤器。
  • 不是雅虎重定向触发的,浏览器打开网站www.test.com
  • 在浏览器中直接输入域名没有触发。

谁能帮帮我

  • 究竟什么时候会触发这个意图过滤器?
  • 对意图过滤器或权限的任何更改将扩大过滤器以应用于重定向请求?
  • 我还可以使用其他方法吗?

感谢您的帮助。

【问题讨论】:

  • 您能否详细说明如何在 android 和 yahoo 中使用 oauth 的代码?
  • 我也有同样的问题,但在 LinkedIn,因为我不能使用不是 HTTP/HTTPS 的重定向 URL,我不得不使用 WebView。您是否在不使用自定义方案的情况下设法解决了这个问题?

标签: android oauth


【解决方案1】:

对于 OAUTH,请确保您使用的是 V2,因为 V1 很快就会被弃用。

 <intent-filter android:label="filter_react_native">
           <action android:name="android.intent.action.VIEW" />
           <category android:name="android.intent.category.DEFAULT"/>
           <category android:name="android.intent.category.BROWSABLE" />
           <data android:host="www.test.com" android:scheme="https"/>
     </intent-filter>

生成的 URI 将是 https://www.test.com

以下应用数据意图示例

 <data android:host="people" android:scheme="peopleapp"/>

生成的uri 将是peopleapp://people

请检查您是否正在使用路由器,如果是,那么您应该在堆栈导航器中设置人员屏幕。

终于,

测试您的意图数据 uri 的最佳方法是:

  1. 如果尚未完成,请卸载现有应用程序。

  2. 再次同步并构建代码。

  3. 使用 uri peopleapp://people 在您的应用中调用 webview。

  4. 它应该可以工作。

  5. 如果您使用的是模拟器,请查看 android here提供的以下链接

  6. 在您的终端中运行此程序(尝试 adb devices 进行测试)。

    $ adb shell am start
         -W -a android.intent.action.VIEW
         -d <URI> <PACKAGE>
    
  7. URI 将是peopleapp://people

  8. PACKAGE 将是您的包/应用程序/名称,即..@string/app_name

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    所以我改变了使用自定义方案而不是 Web URL 的方法,现在一切都按预期工作了。

    所以我的回调 URL 是:
    X://回调

    我的意图过滤器是:

    其中 X 是我的客户方案的名称。

    【讨论】:

    • 如果您使用的授权者只接受带有HTTP/HTTPS 方案的重定向网址,那么您将被锁定在这个问题上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多