Xamarin Android授权广告B2C,不带表单。使用MSAL或AppAuth?
我正在尝试将AdB2C与我的移动应用程序一起使用Xamarin.Android,但不是表单 所有关于如何将AD B2C与Xamarin一起使用的示例都使用了MSAL,它似乎依赖于使用Xamarin.Forms。我找不到关于如何将其集成到Xamarin.Android中的示例或文档 我能够找到但不能满足我需求的示例:Xamarin Android授权广告B2C,不带表单。使用MSAL或AppAuth?,xamarin,xamarin.android,azure-ad-b2c,msal,Xamarin,Xamarin.android,Azure Ad B2c,Msal,我正在尝试将AdB2C与我的移动应用程序一起使用Xamarin.Android,但不是表单 所有关于如何将AD B2C与Xamarin一起使用的示例都使用了MSAL,它似乎依赖于使用Xamarin.Forms。我找不到关于如何将其集成到Xamarin.Android中的示例或文档 我能够找到但不能满足我需求的示例: 我阅读并尝试应用的文档,但未成功进行身份验证,或者在不适用于我的情况下: 有没有办法在Xamarin.Android中使用MSAL而不使用表单,或者我必须使用其他库,比如A
我阅读并尝试应用的文档,但未成功进行身份验证,或者在不适用于我的情况下:
有没有办法在Xamarin.Android中使用MSAL而不使用表单,或者我必须使用其他库,比如AppAuth 更新: 我如何尝试使用MSAL:
public静态字符串ClientId=“MyClientId”;
公共静态字符串signupsignnpolicy=“B2C\u 1\u MyPolicyName”;
公共静态字符串Authority=“我的权限”;
公共静态字符串[]范围={ClientId};
私有身份验证管理器()
{
AuthenticationClient=新的PublicClientApplication(客户端ID,权限);
}
公共异步任务并查找预编译器指令。)
但是如果是这样的话,我真的不知道如何用它来构建项目,以便选择适合android的正确版本
更新2:
添加了应启动身份验证过程的活动的代码:
public class LoginActivity : Activity
{
private async void LoginButtonClicked()
{
try
{
AuthenticationManager.AuthManager.Initialize(this);
await AuthenticationManager.AuthManager.AuthenticateAsync();
}
// Create your application here
catch (Exception e)
{
CreateAndShowDialog(e, Resources.GetString(Resource.String.error_sync));
}
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationAgentContinuationHelper.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
}
你的MainActivity.cs中有这个吗
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationAgentContinuationHelper
.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
}
这是旧的。
但是,如果有人有同样的问题,那么他不太可能像我一样犯同样愚蠢的错误:
字段成员按顺序初始化
我的字段成员之间存在某种依赖关系,由于顺序错误,在初始化依赖部分时,一个值被计算为null。请从您的字段成员中添加一些代码attempts@bren添加了代码,我怀疑这是我的应用程序崩溃的原因。我首先选择了它,因为我想我的答案是,我必须使用与MSAL不同的东西。我真的不明白它是如何在没有Xamarin.formi的情况下在Xamarin.Android中启动WebView和其他所有功能的。我发现ClientId的值实际上是空的,因为它是在compiletime上设置的。也许我必须参考AuthenticationManager.ClientId。这是我没有预料到的行为(来自Java世界)。我明天试试这个。如果这解决了我的问题,我会将此作为解决方案发布。谢谢,对不起,我没有添加活动的代码。我已经包括在内了。请检查我的更新。我目前正在尝试为msal构建调试文件,并检查为什么存在nullpointerexceptionI无法构建msal库。所以我不知道如何找出为什么它说clientid为null而不是。