C# Unity for Android中的Azure AD身份验证出错

C# Unity for Android中的Azure AD身份验证出错,c#,android,unity3d,azure-active-directory,msal,C#,Android,Unity3d,Azure Active Directory,Msal,我正在使用MSAL3.x将Azure AD身份验证构建到我的Android应用程序中,但是它在尝试通过用户交互获取令牌时抛出错误。 MSAL3.x的文档表明需要父活动或窗口,但是使用Unity时,我对此感到非常困惑。这里的任何帮助都将不胜感激 我尝试了来自主要文档的各种输入建议,但似乎没有一个适合Unity。文件可在以下网址找到: Unity使用UnityPlayerActivity或UnityPlayerActivity 对于Android应用程序,该活动是必需的,因为它是创建进程以交互方式获

我正在使用MSAL3.x将Azure AD身份验证构建到我的Android应用程序中,但是它在尝试通过用户交互获取令牌时抛出错误。 MSAL3.x的文档表明需要父活动或窗口,但是使用Unity时,我对此感到非常困惑。这里的任何帮助都将不胜感激

我尝试了来自主要文档的各种输入建议,但似乎没有一个适合Unity。文件可在以下网址找到:


Unity使用
UnityPlayerActivity
UnityPlayerActivity

对于Android应用程序,该活动是必需的,因为它是创建进程以交互方式获取令牌所需的上下文

对于其他情况,您可能需要


对于Unity,您可能需要查看并创建MSAL.NET代码的挂钩。

Unity使用
UnityPlayerActivity
UnityPlayerActivity

对于Android应用程序,该活动是必需的,因为它是创建进程以交互方式获取令牌所需的上下文

对于其他情况,您可能需要


对于Unity,您可能需要查看并为您的MSAL.NET代码创建一个钩子。

Hi Adam,您能详细介绍一下吗。我是在2018年3月,你是说UnityPlayerActivity/UnityPlayerActivity可以用作一项活动。感谢您的帮助。我已经尝试使用了
AndroidJavaClass jclass=newandroidjavaclass(“com.unity3d.player.UnityPlayer”);AndroidJavaObject activity=jclass.GetStatic(“currentActivity”)
以获取对当前活动的引用。它不起作用,这是访问的正确活动吗?我还需要更多吗?或者这是一个可以查看的正确区域吗?嗨,乔洛夫纳,这与这篇文章非常相似:。这是一条正确的路径——你需要对活动的引用。谢谢Adam,到目前为止,这非常有用。但是我该如何处理对活动的引用呢?我是否必须将其传递到java中,然后将其取回
AndroidJavaClass jclass=新的AndroidJavaClass(“com.unity3d.player.UnityPlayer”);AndroidJavaObject activity=jclass.GetStatic(“currentActivity”);authResult=await app.AcquireTokenInteractive(作用域)。WithParentActivityOrWindow(活动)。ExecuteAsync()是我要做的,但这不起作用。是因为我传递的引用是一个AndroidJavaObject而不是一个活动吗?ps,你可能需要为我简单地列出它,因为我在这个项目之外没有java方面的经验。嗨,Adam,你能详细说明一下吗。我是在2018年3月,你是说UnityPlayerActivity/UnityPlayerActivity可以用作一项活动。感谢您的帮助。我已经尝试使用了
AndroidJavaClass jclass=newandroidjavaclass(“com.unity3d.player.UnityPlayer”);AndroidJavaObject activity=jclass.GetStatic(“currentActivity”)
以获取对当前活动的引用。它不起作用,这是访问的正确活动吗?我还需要更多吗?或者这是一个可以查看的正确区域吗?嗨,乔洛夫纳,这与这篇文章非常相似:。这是一条正确的路径——你需要对活动的引用。谢谢Adam,到目前为止,这非常有用。但是我该如何处理对活动的引用呢?我是否必须将其传递到java中,然后将其取回
AndroidJavaClass jclass=新的AndroidJavaClass(“com.unity3d.player.UnityPlayer”);AndroidJavaObject activity=jclass.GetStatic(“currentActivity”);authResult=await app.AcquireTokenInteractive(作用域)。WithParentActivityOrWindow(活动)。ExecuteAsync()是我要做的,但这不起作用。是因为我传递的引用是一个AndroidJavaObject而不是一个Activity吗?ps,您可能需要为我简单地列出它,因为我在这个项目之外没有java方面的经验。
authResult = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
authResult = await app.AcquireTokenInteractive(scopes).WithParentActivityOrWindow("need something here").ExecuteAsync();