Android:使用意图过滤器处理 OAuth 回调

Posted

技术标签:

【中文标题】Android:使用意图过滤器处理 OAuth 回调【英文标题】:Android : Handle OAuth callback using intent-filter 【发布时间】: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。您是否在不使用自定义方案的情况下设法解决了这个问题? 【参考方案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 的最佳方法是:

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

    再次同步并构建代码。

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

    它应该可以工作。

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

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

    $ adb shell am start
         -W -a android.intent.action.VIEW
         -d <URI> <PACKAGE>
    

    URI 将是peopleapp://people

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

希望对你有所帮助。

【讨论】:

【参考方案2】:

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

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

我的意图过滤器是:

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

【讨论】:

如果您使用的授权者只接受带有HTTP/HTTPS 方案的重定向网址,那么您将被锁定在这个问题上。

以上是关于Android:使用意图过滤器处理 OAuth 回调的主要内容,如果未能解决你的问题,请参考以下文章

意图过滤器和 android:pathPattern

特定文件扩展名的Android意图过滤器?

Assetlinks.json 中的应用链接意图过滤器在 Android 上不起作用

如何在android中使用意图过滤器获取数据

未使用数据/主机意图过滤器调用 Android 接收器

Android:<provider> 中的“此处不允许使用元素意图过滤器”?