在Microsoft和Facebook oauth2中,ExternalLoginInfo电子邮件始终为空,MVC C#?

Mohammad Dayyan |

我正在使用以下代码,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" />
Mohammad Dayyan |

我找到了解决方案,我们必须使用Facebook文件中Microsoft的以下内容Startup.Auth.cs

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中为Microsoft Identity Manager生成唯一的电子邮件

当使用 c# 编码为 CID 时,从电子邮件中检索和显示内嵌图像

如何在C#(Windows窗体)的Google OAuth中添加配置文件范围和电子邮件范围

使用C#和OAuth从Twitter获取用户的电子邮件地址

使用SQL数据读取器通过电子邮件或C#在C#中通过电子邮件进行用户登录(如Facebook)?

如何在C#中将Crystal报表导出为PDF和电子邮件

使用Oauth2通过Office365 C#发送电子邮件

如何在C#中编写用于生成和发送电子邮件的代码?

使用Oauth2令牌还原没有电子邮件和密码的会话

使用OAuth2和nodemailer从我的Gmail帐户发送电子邮件

如何从OAuth2 Google API获取电子邮件和个人资料信息?

在Android中使用Gmail API和OAuth2检查来自Gmail的新电子邮件

Microsoft Graph API 中缺少 Azure B2C 注册电子邮件?

C#中的电子邮件解密

电子邮件掩码的正则表达式,除了 C# 中 @ 符号前的前 2 个字母和后 2 个字母

Facebook MVC 5 ASP.NET身份-某些用户的电子邮件为空

如何使用Gmail API,用于应用程序脚本的OAuth2和域范围委派为G Suite域中的用户设置电子邮件签名

使用 C# 从 Outlook 2016 电子邮件项中捕获或导入收件人、发件人、主题和电子邮件正文

python-social-auth Facebook 和 LinkedIn 用户的电子邮件为空

Facebook崩溃,图中的电子邮件为空

使用 Selenium Chrome C# 自动填充电子邮件和密码

如何使用Backbone和C#表单发送电子邮件

C# 多行和多列电子邮件阅读器提取器

C#使用Azure和Fire&Forget发送电子邮件或SMS异步

用于自定义电子邮件和域的 C# 正则表达式

C#附加以打开Outlook电子邮件,编辑和发送

使用电子邮件地址和应用密码从 oauth2/token 获取访问令牌

C#中的栈和空

在C#和Microsoft Fakes中的lambda表达式中通过引用参数