ASP.NET MVC 2应用程序中使用DotNetOpenAuth的null ClaimsResponse

Krz*_*mic 1 openid dotnetopenauth

我正在尝试使用DotNetOpenAuth(最新版本)来使用ASP.NET MVC 2网站.我得到第一部分工作,当用户选择OpenID提供者时调用操作,我得到正确的标识符传入,然后我被正确地重定向到提供者网站,我被重定向回我的网站,但这是问题所在.

我请求的声明为空(请参阅下面的代码).

public ActionResult TryAuth(string openid_identifier)
{
    var openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();
    if(response== null)
    {
        var req = openid.CreateRequest(openid_identifier);
        req.AddExtension(new ClaimsRequest
                            {
                                Email = DemandLevel.Require,
                                Nickname = DemandLevel.Require
                            });
        return req.RedirectingResponse.AsActionResult();
    }
    switch(response.Status)
    {
        case AuthenticationStatus.Authenticated:
            {
                var data = response.GetExtension(typeof(ClaimsResponse)) as ClaimsResponse;
                // data is null <-----------------------------------------
                return View("Index");
            }
    }
    return View("Index");
}
Run Code Online (Sandbox Code Playgroud)

如果有人能指出我正在制造的(不那么)明显的错误,我将不胜感激.

Jai*_*ero 5

我遇到了同样的问题,直到我发现对于Google,您必须将电子邮件字段设置为DomainLevel.Require而不是DomainLevel.Request(可选)

fields.Email = DemandLevel.Require;
Run Code Online (Sandbox Code Playgroud)