このチュートリアルに従って、ライブ アカウントの oauth を asp mvc 5 および web api 2 アプリで動作させました。
すべてうまくいき、スコープを追加して、ユーザーの電子メールを取得できます。しかし、どうすればそれを Web ページに戻すことができますか。
いくつかのコード:
Startup.Auth.cs 内
Microsoft.Owin.Security.MicrosoftAccount.MicrosoftAccountAuthenticationOptions microsoftAccountOptions = new Microsoft.Owin.Security.MicrosoftAccount.MicrosoftAccountAuthenticationOptions(){
ClientId = microsoftClientId,
ClientSecret = microsoftClientSecret
};
microsoftAccountOptions.Scope.Add("wl.basic");
microsoftAccountOptions.Scope.Add("wl.emails");
microsoftAccountOptions.Provider = new Microsoft.Owin.Security.MicrosoftAccount.MicrosoftAccountAuthenticationProvider()
{
OnAuthenticated = async context =>
{
context.Identity.AddClaim(new System.Security.Claims.Claim("urn:microsoftaccount:access_token", context.AccessToken));
context.Identity.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, context.User["emails"].Value<string>("account")));
}
};
app.UseMicrosoftAccountAuthentication(microsoftAccountOptions);
したがって、OnAuthenticate コールバックでは、電子メールをクレームに追加できます。これはすべてうまくいきますが、MVC コントローラー (リダイレクト URL) でアクセスしようとすると、すべてのクレームがなくなります。私は Web Api と MVC を使用しているので、それらの主張がなくなったのはそれほど奇妙ではありません。AccountController は ApiController であり、HomeController へのリダイレクトは別のリクエストである可能性が高いためです。
public ActionResult Index()
{
var claims = HttpContext.GetOwinContext().Authentication.User.Claims;
ViewBag.Title = "Home Page";
return View(claims);
}
どうすれば電子メールの申し立てを通過できますか?