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 回调的主要内容,如果未能解决你的问题,请参考以下文章