在使用 Microsoft.AspNetCore.Authentication 中的外部登录功能时,有时候 authenticationManager.GetExternalLoginInfoAsync() 方法可能会返回 null。这可能是由于配置或使用上的一些问题导致的。下面是一些解决方法,你可以尝试其中的一种或多种来解决这个问题。
services.AddAuthentication()
.AddLinkedIn(options =>
{
options.ClientId = "";
options.ClientSecret = "";
});
请确保替换 和 为你自己 LinkedIn 应用程序的客户端 ID 和客户端密码。
app.UseAuthentication();
这将确保身份验证中间件在请求处理管道中正确地处理身份验证过程。
使用 LinkedIn 登录
请确保在 asp-route-provider 属性中指定了正确的提供程序名称,如 "LinkedIn"。
var info = await authenticationManager.GetExternalLoginInfoAsync();
如果仍然返回 null,可以尝试使用以下代码获取外部登录信息:
var info = await HttpContext.AuthenticateAsync(IdentityConstants.ExternalScheme);
确保在方法签名中包含了 IHttpContextAccessor 参数,以便正确地获取 HttpContext。
这些解决方法中的一种或多种可能会解决 authenticationManager.GetExternalLoginInfoAsync() 始终返回 null 的问题。请根据你的具体情况逐一尝试这些方法,并根据需要进行调整。