C# Xamarin Azure广告B2C登录,停留在登录页面
我正在尝试使用AAD B2C身份验证登录xamarin移动应用程序。我已经在VisualStudio中创建了解决方案。在Azure中,我已经创建了我的租户,注册了一个本机应用程序和一个web应用程序(属性如下),并且正在尝试调试我的应用程序。目前,我被重定向到B2Clogin页面,可以输入用户名和密码。然后它处理请求并无限期地停留在该页面上。当我检查azure门户时,我可以看到我通过B2C登录页面创建的帐户,我可以看到成功登录,但B2C登录页面不会重定向回我的应用程序。 我还在AppDelegate.cs和MainActivity.cs中使用AuthenticationContinuationHelper 在App.cs中C# Xamarin Azure广告B2C登录,停留在登录页面,c#,azure,xamarin,azure-ad-b2c,C#,Azure,Xamarin,Azure Ad B2c,我正在尝试使用AAD B2C身份验证登录xamarin移动应用程序。我已经在VisualStudio中创建了解决方案。在Azure中,我已经创建了我的租户,注册了一个本机应用程序和一个web应用程序(属性如下),并且正在尝试调试我的应用程序。目前,我被重定向到B2Clogin页面,可以输入用户名和密码。然后它处理请求并无限期地停留在该页面上。当我检查azure门户时,我可以看到我通过B2C登录页面创建的帐户,我可以看到成功登录,但B2C登录页面不会重定向回我的应用程序。 我还在AppDelega
````
public static string B2CClientEndpoint = "<UserFlowAuthorizationEndpoint>"; //the endpoint generated when we ran the user flow.
public static string[] B2CScopes = { "<RegisteredWebAPI.Read>" };
PCAB2C = PublicClientApplicationBuilder.Create(B2CClientID)
.WithB2CAuthority("https://<DirectoryName>.b2clogin.com/tfp/<DirectoryName>.onmicrosoft.com/<Policy>")
.WithIosKeychainSecurityGroup("<SecurityGroup>")
.WithRedirectUri("msal<ApplicationID>://auth")
.Build();
````
````
公共静态字符串B2CClientEndpoint=“”//运行用户流时生成的端点。
公共静态字符串[]B2CScopes={”“};
PCAB2C=PublicClientApplicationBuilder.Create(B2CClientID)
.有权https://.b2clogin.com/tfp/.onmicrosoft.com/")
.WithIosKeychainSecurityGroup(“”)
.WithRedirectUri(“msal://auth")
.Build();
````
在控制器类中
````C#
IAccount User = Accounts.FirstOrDefault();
if (Accounts.Count() != 0)
{
Result = await App.PCAB2C.AcquireTokenSilent(App.B2CScopes, User)
.WithB2CAuthority("<B2CSignInAuthority>")
.ExecuteAsync();
}
else
{
User = Accounts.FirstOrDefault();
Result = await App.PCAB2C.AcquireTokenInteractive(App.B2CScopes)
.WithB2CAuthority("<B2CSignInAuthority>")
.WithParentActivityOrWindow(App.ParentWindow)
.WithAccount(User)
.ExecuteAsync();
}
```
`C#
IAccount User=Accounts.FirstOrDefault();
如果(Accounts.Count()!=0)
{
结果=等待App.PCAB2C.AcquireTokenSilent(App.B2CScopes,用户)
.有权(“”)
.ExecuteAsync();
}
其他的
{
User=Accounts.FirstOrDefault();
结果=等待App.PCAB2C.AcquireTokenInteractive(App.B2CScopes)
.有权(“”)
.WithParentActivityOrWindow(App.ParentWindow)
.WithAccount(用户)
.ExecuteAsync();
}
```
根据B2C的广告
要刷新并获取隐藏iframe中的令牌,请使用prompt=none确保iframe不会卡在登录页面上,并立即返回
因此,基本上,验证您的URL,不要忘记查看错误响应 我遇到了这个问题,通过减少最低目标Android和iOS版本解决了这个问题 ie:Android 8.0及更高版本&iOS min 13.0 显然,MSAL在Xamarin表单构建中有一个min OS版本作为目标
我尝试使用提示符(prompt.noprompt)添加,但仍然不起作用,没有任何更改将“&prompt=none”添加到URL结尾没有修复它?我没有URL。Xamarin方法根据选项自动格式化URL并在方法中发送。添加该属性声明也可以做同样的事情。