Chrome中的OAuth和自定义scheme会导致“ERR_UNKNOWN_URL_SCHEME”

我一直坚持这个工作了几个小时,因为这个工作之前工作,但突然停下来performance如预期。 我不知道如何以及为什么,因为我一直在重新检查过程中的每一行代码,却没有看到有什么问题,所以我要求你们帮忙。

好的。 所以我有一个LoginScreen活动,点击一个button开始一个新的Intent.ACTION_VIEW 。 这将在ApiManager.OAUTH_CALLBACK_URI设置为stjapp://oauthresponse ,在浏览器中启动OAUTH stjapp://oauthresponse

这里是我的AndroidManifest.xml部分这个活动:

 <activity android:name=".LoginScreen" android:label="@string/application" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </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="stjapp" android:host="oauthresponse" /> </intent-filter> </activity> 

我如何在我的活动中启动Intent.ACTION_VIEW

 private View.OnClickListener loginHandler = new View.OnClickListener() { public void onClick(View v) { OAuthClientRequest request = null; try { request = OAuthClientRequest .authorizationLocation(ApiManager.OAUTH_AUTHORIZE) .setClientId(ApiManager.CLIENT_ID).setRedirectURI(ApiManager.OAUTH_CALLBACK_URI) .buildQueryMessage(); } catch (OAuthSystemException e) { e.printStackTrace(); } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(request.getLocationUri() + "&response_type=code")); startActivity(intent); } }; 

这里是浏览器发生的一个截图:

在这里输入图像说明

在那里,我应该回到我的LoginScreen活动,并处理onNewIntent方法中的code查询参数,但是…是的,事情不能按预期工作了。

任何帮助赞赏。

Solutions Collecting From Web of "Chrome中的OAuth和自定义scheme会导致“ERR_UNKNOWN_URL_SCHEME”"

看起来这是一个铬错误 。 我使用的解决方法是RedirectURI的PHPlogin页面,它通过JavaScript打开应用程序(不受该错误影响):

 <script language="javascript"> window.location = 'myscheme://myhost/?<?=$_SERVER["QUERY_STRING"]?>'; </script> 

我有相同的错误,并通过在http://加上url来解决它。

在Chrome版本40及更高版本中,此错误已重新显示,但只有在地址栏中手动inputredirect页面的URL时才有效。 这个问题是在这个铬问题跟踪器。

这个问题的答案是“解决方法”

好的,我发现通过意图的window.locationredirect将工作,因为它是从页面上的外部来源或链接点击。 如果您手动将redirect页面的地址input到地址栏中,应用程序的redirect/打开将失败,并出现上述错误。

因此,当用户点击链接时,发送电子邮件或短信中redirect页面的链接就可以正常工作。 手动input地址到地址栏将失败。 window.location = chromeUrl; 应该工作得很好。

只有在地址栏中手动inputredirect页面的URL。 这个问题是在这个铬问题跟踪器。

这个问题的答案是“解决方法”

好的,我发现通过意图的window.locationredirect将工作,因为它是从页面上的外部来源或链接点击。 如果您手动将redirect页面的地址input到地址栏中,应用程序的redirect/打开将失败,并出现上述错误。

因此,当用户点击链接时,发送电子邮件或短信中redirect页面的链接就可以正常工作。 手动input地址到地址栏将失败。 window.location = chromeUrl; 应该工作得很好。