2

如何从微软帐户获取电子邮件?我正在执行以下操作:

    public ActionResult ExternalLoginCallback(string returnUrl)
    {
    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
//...

string email = null;
                if (result.Provider.ToLower() == "google")
                {
                    email = result.ExtraData["email"];
                }
                else if (result.Provider.ToLower() == "facebook")
                {
                    email = result.ExtraData["username"];
                }
                else if (result.Provider.ToLower() == "microsoft")
                {
                    email = result.ExtraData["????"];
                }    
}

对于 google 和 facebook,我可以收到电子邮件,但不能使用 microsoft?我应该使用什么kew?

4

3 回答 3

4
于 2013-06-29T12:51:03.920 回答
4
于 2014-11-17T06:56:22.677 回答
0

amp的回答真的帮助了我。

还想提一下,当您注册您的应用程序 ( https://apps.dev.microsoft.com/ ) 时,您必须选中“实时 SDK 支持”复选框 - 否则 OAuth 服务会抱怨您没有客户端密码(即使你这样做)。

只是想添加如何在不使用 AuthConfig.cs 的情况下执行此操作,以防万一有人感兴趣(有点手动,但如果您不熟悉框架,它会更容易理解):

public ActionResult LoginWithMicrosoftAccount(CancellationToken cancellationToken)
{
    var client = new MicrosoftScopedClient(appID, appsecret, "wl.basic wl.emails");
    var urlNoQueryString = Request.Url.GetLeftPart(UriPartial.Path);

    AuthenticationResult result = null;
    if(Request.QueryString["error"]!= null)
    {//Microsoft service returns error
        return View();
    }
    if (Request.QueryString["code"] != null)
    {
        result = client.VerifyAuthentication(this.HttpContext);

        //at this point, you should get the username from result.UserName
    }
    if(Request.QueryString["code"]==null || result.UserName == null)
    {//will do the redirection
        client.RequestAuthentication(this.HttpContext, new Uri(urlNoQueryString));
    }
    return View();
}
于 2017-04-23T15:03:02.183 回答