Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# 从Unity应用程序中调用时,在MSAL';什么是互动的?_C#_.net_Unity3d_Sharepoint Online_Msal - Fatal编程技术网

C# 从Unity应用程序中调用时,在MSAL';什么是互动的?

C# 从Unity应用程序中调用时,在MSAL';什么是互动的?,c#,.net,unity3d,sharepoint-online,msal,C#,.net,Unity3d,Sharepoint Online,Msal,我正在尝试通过MSAL库进行身份验证。函数调用中“对象父对象”的用途是什么?我发现最好的是它应该是父窗口。我试着把这个(我知道是哑巴)和FindWindow(null,“AppName”)(来自user32.dll)来获取应用程序窗口的IntPtr,但调用函数时所有操作都会产生null错误。那么,应该做些什么才能让这个功能发挥作用呢?团结是否有一个具体的处理方式,无论这应该是什么 为什么在世界上的文件中根本没有提到这个必要的父母?? 编辑:我最关心的是“对象父对象”应该是什么。在不知道它应该是

我正在尝试通过MSAL库进行身份验证。函数调用中“对象父对象”的用途是什么?我发现最好的是它应该是父窗口。我试着把
这个
(我知道是哑巴)和
FindWindow(null,“AppName”)
(来自user32.dll)来获取应用程序窗口的IntPtr,但调用函数时所有操作都会产生null错误。那么,应该做些什么才能让这个功能发挥作用呢?团结是否有一个具体的处理方式,无论这应该是什么

为什么在世界上的文件中根本没有提到这个必要的父母??

编辑:我最关心的是“对象父对象”应该是什么。在不知道它应该是什么的情况下,我不知道如何调用该函数。如下图所示,VisualStudio正在标记没有它的调用,并迫使我将其放入。我现在将代码的其余部分包括在内,以防有人想指出除使用“parent”之外我可能做错的其他事情

使用Microsoft.Identity.Client;
公共异步void SharepointLogin()
{
IntPtr windowPtr=FindWindow(null,“MyAppName”);//这是一个“父”对象,我不知道它应该是什么,因为它没有文档记录。
IPublicClient应用程序PublicClientApp;
Log(“创建PublicClientApplicationBuilder”);
PublicClientApp=PublicClientApplicationBuilder.Create(ClientId)
.WithRedirectUri(“https://login.microsoftonline.com/common/oauth2/nativeclient")
.WithAuthority(AzureCloudInstance.AzurePublic,租户)
.Build();
Debug.Log(“获取帐户”);
var accounts=await PublicClientApp.GetAccountsAsync();
IEnumerable scopes=新列表{“User.Read”};
验证结果;
尝试
{
Log(“尝试静默令牌”);
结果=等待PublicClientApp.AcquireTokenSilent(作用域、帐户、FirstOrDefault())
.ExecuteAsync();
}
捕获(MsalUiRequiredException)
{
Debug.Log(“失败。正在尝试交互式令牌”);
//这是我无法删除“父”对象的行
//(在本例中为“windowPtr”),没有在图像中看到的错误
//它没有像这样的编译问题,但它总是有一个
//运行时出现空指针异常。在
//第一个“尝试”,除了我被迫提供的这个“父”对象。
结果=等待PublicClientApp.AcquireTokenInteractive(作用域,windowPtr)
.ExecuteAsync();
}
}

@Skyler Lauren走上了正确的道路。尽管VisualStudio声称我安装了4.14.0,但当他回答时我复制的dll(3.0)的任何版本最终都胜过VS使用的版本。删除我复制到Unity文件夹中的一个,卸载、重新安装,然后按照函数确定实际dll的存在位置,结果我不再需要“父”对象。没有回答“父对象”最初是什么的问题,但这现在是一个没有意义的问题,因为我使用了错误的dll。它也不能解决我的空异常问题,但这将是一个不同的问题。

因为我无法模拟运行您的代码。我要问一些明显的问题,你确定
范围
是一个
系统.Collections.Generic.IEnumerable
?基于这个错误,这个错误,完全是由于语法问题。没有文档化的原因是它实际上不是必需的。如图所示,VisualStudio绝对要求我将“某物”放在父位置。至于范围,是的,非常重要。所以我只能假设它一定与一个我不知道它应该用于什么的项目有关。
acquiredTokenInteractive
绝对不需要它。错误信息只是不清楚。既然您没有提供最少量的代码来诊断您的问题,我再次要问一个愚蠢的问题,
PublicClientApp
是否定义为
ippublicclientapplication
?同样,
result
是否定义为
AuthenticationResult
?此外,
作用域的值是多少?请参阅更新。既然VisualStudio确实在强制使用“parent”,那么也许这就是我的问题所在。因为我没有写dll,所以不知道这是怎么回事。。。?如果我在那里放了一些东西,并且我的IEnumerable没有问题,错误就会消失。@CodeMonkey你能验证你使用的是Microsoft.Identiy.Client v4.14.0吗?当你链接时,没有提到父对象的参数,我可以看到它希望在你的屏幕截图中有一个通用对象,它也不像你提到的那样有用。我建议您检查所使用版本的正确文档。另一种尝试是右键单击该方法并查看源代码。很多时候,方法声明上面会有一个解释。