确定在AddMicrosoftAccount之前已经启用了Microsoft身份验证,并且在Startup.cs中正确配置了Authentication服务。
下面是示例代码:
在 ConfigureServices 方法中启用 Microsoft 身份验证:
services.AddAuthentication().AddMicrosoftAccount(options =>
{
options.ClientId = "
options.ClientSecret = "
});
确保在 Configure 方法中添加 Authentication 中间件:
app.UseAuthentication();
然后,在您的控制器方法中调用 GetExternalLoginInfoAsync() 以获取登录信息。
[AllowAnonymous]
public async Task
{
if (remoteError != null)
{
ModelState.AddModelError(string.Empty, $"Error from external provider: {remoteError}");
return View("Login");
}
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
return RedirectToAction(nameof(Login));
}
//...
}
这应该会解决 GetExternalLoginInfoAsync 返回 null 的问题。