【问题标题】:null ClaimsResponse with DotNetOpenAuth in ASP.NET MVC 2 application在 ASP.NET MVC 2 应用程序中使用 DotNetOpenAuth 的 null ClaimsResponse
【发布时间】:2013-02-13 18:03:34
【问题描述】:

我正在尝试让 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");
}

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

【问题讨论】:

    标签: openid dotnetopenauth


    【解决方案1】:

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

    fields.Email = DemandLevel.Require;
    

    【讨论】:

    • DemandLevel.Require 为我解决了问题!非常感谢!
    【解决方案2】:

    请查看所有类似的问题。Refer this

    您的代码看起来不错。确保您在 web.config 文件中使用activate the AXFetchAsSregTransform,以最大限度地提高您获得回报的机会。不过,提供者可以为您提供任何属性。某些提供商(例如 Yahoo)要求您的 RP 正确实施 RP Discovery,DotNetOpenAuth 随附的示例 RP 证明了这一点。

    这里是my blog post on getting RP Discovery done right。这样做,然后再次尝试您测试过的网站。还要记住,一些 Provider 会缓存 RP Discovery 结果,因此您可能会应用所有 RP Discovery 修复程序,但仍然需要等待一个小时或一天,然后 Provider 才会开始为您提供数据。

    【讨论】:

    • 我尝试了三个提供商 - myopenid、google 和 technorati,但没有一个返回任何内容
    • (我自己不太喜欢 StackOverflow 的搜索功能。它需要一个 +keyword 功能来强制匹配)
    • 你有连接 AXFetchAsSregTransform 吗?
    • 刚刚加强了我的回答,包括一篇关于 RP Discovery 的博文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多