gpt4 book ai didi

c# - ExternalLoginInfo 电子邮件在 Microsoft 和 Facebook oauth2、MVC C# 中始终为 null?

转载 作者:可可西里 更新时间:2023-11-01 07:51:14 26 4
gpt4 key购买 nike

我正在为 ExternalLoginCallback
使用以下代码在 google 中一切正常。但在 FacebookMicrosoft 中,loginInfo.Email 始终为空。以下代码有什么问题?

    [AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}

// loginInfo.Email is always null, so FindByEmailAsync throws an exception
UserIdentityModel user = await UserManager.FindByEmailAsync(loginInfo.Email);

if (user != null)
{
await SignInAsync(user, false);
return RedirectToLocal(returnUrl);
}

// If the user does not have an account, then prompt the user to create an account
ViewBag.ReturnUrl = returnUrl;
ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel
{
UserName = loginInfo.DefaultUserName,
Email = loginInfo.Email
});
}

我正在使用以下软件包:

<package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Facebook" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Google" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.MicrosoftAccount" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Twitter" version="3.0.1" targetFramework="net45" />

最佳答案

我找到了解决方案,我们必须在 Startup.Auth.cs 文件中使用 FacebookMicrosoft 如下:

// Facebook
app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
AppId = "---",
AppSecret = "---",
Scope = { "email" }
});

// Microsoft
app.UseMicrosoftAccountAuthentication(new MicrosoftAccountAuthenticationOptions()
{
ClientId = "---",
ClientSecret = "---",
Scope = { "wl.basic", "wl.emails" }
});

关于c# - ExternalLoginInfo 电子邮件在 Microsoft 和 Facebook oauth2、MVC C# 中始终为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com