小编Ray*_* A.的帖子

使用 RemoteAuthenticatorView OnLogInSucceeded 提供第二个 AzureAD 登录对话框

很难理解正在发生的事情,我确实需要一些想法和投入。拜托,我不太擅长用文字描述问题所在,所以请温柔点。

我有一个 Blazor wasm 前端和一个 Azure Function 后端。
我进行了标准的、没什么特别的 Azure AD 登录。稍后在代码中,我使用不记名令牌与 AzFunction 连接,并且它有效。AzFunction 评估令牌并识别用户以进行进一步处理。我应该提到 AzFunction 连接到 Graph 和其他 API。

所以一切都很好并且工作正常,这是我的问题。
我想在登录时连接到 AzFuntion,以获取一些用户配置文件信息。为了调试,我只做了一个按钮,一切正常。

然后,我将“按钮代码”移至 Authenticator.razor 中由 RemoteAuthenticatorView OnLogInSucceeded 调用的方法。

<RemoteAuthenticatorView Action="@Action" LogInFailed="LogInFailedFragment" OnLogInSucceeded="LoginComplete" />

这是我的问题: 使用 OnLogInSucceeded 我得到了 2 个必须响应的 Azure AD 登录信息。第一个之后,直接进入第二个。这一切都只是因为我将代码从按钮移至 OnLogInSucceeded。当我调试时,我清楚地看到令牌在连接到 AzFunction 之前就存在。

另外,当我在 Visual Studio 中从 OnLogInSucceeded 调用的 LoginComplete 函数中设置断点并保持几秒钟时,它只需一个登录对话框即可完成登录过程。

谁能帮我理解为什么?

有什么更好的指示可以输入“获取用户个人资料”代码吗?我需要的是要运行的代码,因此当登录完成后,只需一次登录即可检索用户配置文件信息。

编辑:
代码似乎有一个更好的解决方案,但是我仍然不明白是什么让第二次登录出现......这是我问题的主要原因。

blazor blazor-webassembly

10
推荐指数
2
解决办法
8036
查看次数

GraphServiceClient PageItarator 失败并显示“可解析对象不包含集合属性”

我想在我的项目中使用 PageIterator,它工作得很好,直到我想从 AzureAD 中取出组成员。无论我做什么,PageIterator 都会失败并显示“The Parsable does not contains a collection property”。

List<User> users = new();
var result = await graphClient.Groups[groupId].Members.GetAsync((requestConfiguration) =>
    {
       requestConfiguration.QueryParameters.Top = 2;
       // I only do this to force pageing, will not be on final version
    });

var pageIterator = PageIterator<User, DirectoryObjectCollectionResponse>
    .CreatePageIterator(graphClient, result,
         (m) =>
         {
             users.Add(m);
             return true;
         });

await pageIterator.IterateAsync();
Run Code Online (Sandbox Code Playgroud)

我的代码强制执行 2 项。这只是因为我绝望地试图找出我的代码出了什么问题。

我对这里出了什么问题一无所知,任何帮助都会很棒。

c# asp.net-core microsoft-graph-sdks microsoft-graph-api graphserviceclient

3
推荐指数
1
解决办法
750
查看次数