我正在尝试在我的应用程序中设置身份验证。我有发布到外部网站的工作(脸书和谷歌)
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get), ValidateInput(false)]
public ActionResult OpenIdLogOn(string returnUrl)
{
var redirectUrl = "~/Companies/LogIn";
var provider = Request.Form["provider"];
if (Common.IsNull(provider))
return View();
OpenAuth.RequestAuthentication(provider, redirectUrl);
return View();
}
这通过确定单击了哪个按钮(使用 facebook / Google 登录)然后请求身份验证来工作。当身份验证完成并收到回复后,我尝试检索电子邮件地址。
public ActionResult LogIn()
{
var redirectUrl = "~/Companies/LogIn/OpenIdLogOn";
var response = Response;
var userEmail = Request.Params[16];
if (!String.IsNullOrEmpty(ReturnUrl))
{
Response.Redirect("~/Bloggers");
}
ViewBag.OAuthProviders = OpenAuth.AuthenticationClients.GetAll().ToList();
return View();
}
如果我使用谷歌登录,以下将起作用 -
var userEmail = Request.Params[16];
但facebook不会发回电子邮件。好吧,我在请求中看不到它。必须有比使用Request.Params[16];
也更好的方法来做到这一点。帮助将不胜感激。