0

このチュートリアルに従って、ライブ アカウントの 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);
    }

どうすれば電子メールの申し立てを通過できますか?

4

1 に答える 1