我需要帮助。
我正在我的应用程序中使用AppAuth-Android来处理oAuth流程。流程开始时,我按startActivityForResults
步骤中所述调用https://github.com/openid/AppAuth-Android#obtaining-an-authorization-code方法。调用此方法后,浏览器将弹出,等待用户登录。
我的清单上有
<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="com.app.name"
android:host="oauth2redirect/login-callback" />
</intent-filter>
完成登录步骤后需要处理重定向回调,如AppAuth文档中所指定。
在我的应用程序的渗透测试期间,发现在此特定时刻(当可见用于身份验证的浏览器时,您按照以下步骤操作,应用程序崩溃)>
这是崩溃的堆栈跟踪。
E/AndroidRuntime: FATAL EXCEPTION: main Process: io.app.mobile, PID: 29226 java.lang.RuntimeException: Unable to resume activity {com.app.name/net.openid.appauth.AuthorizationManagementActivity}: java.lang.UnsupportedOperationException: This isn't a hierarchical URI. at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3830) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3862) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6854) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860) Caused by: java.lang.UnsupportedOperationException: This isn't a hierarchical URI. at android.net.Uri.getQueryParameterNames(Uri.java:1590) at net.openid.appauth.AuthorizationManagementActivity.extractResponseData(AuthorizationManagementActivity.java:318) at net.openid.appauth.AuthorizationManagementActivity.handleAuthorizationComplete(AuthorizationManagementActivity.java:259) at net.openid.appauth.AuthorizationManagementActivity.onResume(AuthorizationManagementActivity.java:234) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1413) at android.app.Activity.performResume(Activity.java:7307) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3822)
问题似乎是打开com.name.app:abcd,使应用程序认为该意图产生了结果,
net.openid.appauth.AuthorizationManagementActivity
试图处理它
private Intent extractResponseData(Uri responseUri) { if (responseUri.getQueryParameterNames().contains(AuthorizationException.PARAM_ERROR)) { return AuthorizationException.fromOAuthRedirect(responseUri).toIntent(); } (...) }
但是如果URL不是分层的,则类
getQueryParameterNames
的java.net.URI
引发异常。
我不确定这是否是与库本身有关的问题,或者是否有可以实现的解决方案(也许更改清单深链接处理)。事实是我不知道该如何解决。
如果问题看起来过于笼统,并且您需要一些其他信息来重现此问题,请随时询问更多详细信息。谢谢:)
我需要帮助。我在我的应用程序中使用AppAuth-Android处理oAuth流。流程开始时,我按https://github.com/openid/AppAuth -...
我假设您发布的intent-filter
设置为RedirectUriReceiverActivity
,但实际上您可以拥有自己的Activity
,而不是中间人。如果您查看source code,基本上只不过是