Xamarin.forms 在Xamarin.Auth oidc完成后,Android应用程序PushAsync nav不工作

Xamarin.forms 在Xamarin.Auth oidc完成后,Android应用程序PushAsync nav不工作,xamarin.forms,xamarin.android,xamarin.auth,Xamarin.forms,Xamarin.android,Xamarin.auth,我已经创建了一个Xamarin.Forms应用程序,它使用我们的身份服务器进行授权和身份验证。整个身份验证过程在iOS和Android中都运行良好——在这两种情况下,我都可以获得一个令牌,并可以查询我们的API Android应用程序不接受导航命令,并停留在自定义URI回调的目标活动上 android清单中有一个is4.callback的活动条目,它运行良好: //此处的Name属性在Android.manifest中的活动中引用 // https://docs.microsoft.com/en

我已经创建了一个Xamarin.Forms应用程序,它使用我们的身份服务器进行授权和身份验证。整个身份验证过程在iOS和Android中都运行良好——在这两种情况下,我都可以获得一个令牌,并可以查询我们的API

Android应用程序不接受导航命令,并停留在自定义URI回调的目标活动上

android清单中有一个is4.callback的活动条目,它运行良好:

//此处的Name属性在Android.manifest中的活动中引用
// https://docs.microsoft.com/en-us/xamarin/android/platform/android-manifest
[活动(Name=“is4.callback”)]
公共类AuthCallback:活动
{
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
if(Intent?.Data?.ToString()!=null)
{
//将Android.Net.Url转换为Uri
var uri=新uri(Intent?.Data?.ToString());
//加载重定向URL页面
AuthenticationState.Authenticator.OnPageLoading(uri);
//这个;
//返回;
}否则
{
//处理它
}
}
}
如上所述,OnPageLoading()方法调用按照Xamarin.Auth将控制权发送回OnAuthCompleted():

已完成身份验证的异步void(对象发送方、AuthenticatorCompletedEventArgs e) { 如果(e.Account!=null&&e.Account.Properties!=null) { Client.DefaultRequestHeaders.Add(“Authorization”、$“Bearer{e.Account.Properties[“access_token”]}”); HttpResponseMessage response=await Client.GetAsync(“https://our.is4.server/connect/userinfo"); if(响应!=null) { 使用(HttpContent=response.content) { string responseBody=wait response.Content.ReadAsStringAsync(); 控制台写入线(应答器体); } Console.WriteLine(_logStringPre+“MainPage.OnAuthCompleted(),调用nav:”); 等待Navigation.PushAsync(新的HasAuth()); } 其他的 { //处理它 } } 其他的 { 等待Navigation.PushAsync(新的NoAuth()); } } 然而,对于
PushAsync
HasAuth
视图的Android来说,并没有像预期的那样发生-捕捉回拨(is4.callback)的活动仍然保持着焦点。我的Pixel 3屏幕底部的小“back”(返回)按钮将我发送到
HasAuth
页面,视图应该在那里。在
PushAsync
之前的最后一个
WriteLine
确实启动了,我想我需要以某种方式关闭Android活动吗

在is4.callback中使用
finish()
,可以防止进行身份验证<代码>返回在该活动中似乎没有任何效果

我确实看到了来自Android操作系统的“如果CustomTabs登录屏幕未自动关闭…”建议,在is4.callback活动中可见,但在我看来CustomTabs是否正确关闭? 我错过了什么


谢谢

您是否已向IntentFilter注册了自定义方案,用于拦截和解析URL的某些活动,请参阅:@LeoZhu MSFT是的,回调工作正常,并在Visual Studio中单步执行代码,导航工作正常,控件按设计在HasAuth()中着陆,但我的Android手机上的视图并没有改变,仍然停留在is4.0中。我想它可能没有从CustomTabs正确返回。