我目前正在开发基于OpenId Connect和Chrome CustomTabs的身份验证应用。在身份验证流程中,用户会被发送到重定向网址,并且我在这里遇到了一些问题。
在我的应用中,我有以下intent-filter:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="sncfapp" android:host="callbackrurl" />
</intent-filter>
然而,意图有时并不起作用。似乎每次都会出现问题&#34;&amp;&#34;在URL中使用,意图不会被触发。我得到一个ERR_UNKNOWN_URL_SCHEME。
我尝试通过adb启动一些网址(还有其他接收方),这是我的结果:
确定 adb shell am start -a android.intent.action.VIEW -d&#34; fitbittester:// logincallback&#34;
确定 adb shell am start -a android.intent.action.VIEW -d&#34; sncfapp:// callbackrurl&#34;
确定 adb shell am start -a android.intent.action.VIEW -d &#34; sncfapp:// callbackrurl代码= 45644546&#34;
NOK adb shell am start -a android.intent.action.VIEW -d&#34; sncfapp:// callbackrurl?code = 45644546&amp; scope = test%20&#34;
确定 adb shell am start -a android.intent.action.VIEW -d&#34; sncfapp:// callbackrurl?scope = test%20&#34;
确定 adb shell am start -a android.intent.action.VIEW -d&#34; fitbittester:// logincallback?scope = test%20&#34;
NOK adb shell am start -a android.intent.action.VIEW -d&#34; fitbittester:// logincallback?scope = test%20&amp;代码= 1144&#34;
这是正常的吗?我知道这样的意图应该与REST参数一起使用。但是,当调用带有get参数的URL时,不会触发意图,这似乎很奇怪。
答案 0 :(得分:2)
这是我找到的解决方案:我必须使用转义字符“\”来使用&amp;亚行的角色。
$ adb shell am start“http://www.example.com?param1=1 \&amp; param2 = 2”
答案 1 :(得分:0)
使用网址编码,因为我可以看到&#34;&amp;&#34;之后有一个空格。引起这个问题的事件!!