Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Android授权广告B2C,不带表单。使用MSAL或AppAuth?_Xamarin_Xamarin.android_Azure Ad B2c_Msal - Fatal编程技术网

Xamarin Android授权广告B2C,不带表单。使用MSAL或AppAuth?

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

我正在尝试将AdB2C与我的移动应用程序一起使用Xamarin.Android,但不是表单

所有关于如何将AD B2C与Xamarin一起使用的示例都使用了MSAL,它似乎依赖于使用Xamarin.Forms。我找不到关于如何将其集成到Xamarin.Android中的示例或文档

我能够找到但不能满足我需求的示例:

我阅读并尝试应用的文档,但未成功进行身份验证,或者在不适用于我的情况下:


有没有办法在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而不是。