アプリで認証を設定しようとしています。外部ウェブサイトへの投稿が機能しています(FacebookとGoogle)
[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();
}
Googleでログインすると、次のようになります-
var userEmail = Request.Params[16];
しかし、Facebookはメールを送り返しません。リクエストでそれを見ることができません。これを行うには、も使用するよりも良い方法があるはずRequest.Params[16];
です。助けていただければ幸いです。