【问题标题】:How to get the 'NerdDinner' OpenID popup window working如何让“NerdDinner”OpenID 弹出窗口正常工作
【发布时间】:2011-09-22 20:42:28
【问题描述】:

所以我尝试以 NerdDinner 2 为例来实现 OpenID。当您单击其中一个 OpenID 提供程序时,您会看到一个类似于以下屏幕截图的弹出窗口。我已经正确设置了大部分底层代码,并且我的登录页面加载并显示了三个提供程序按钮,但是当我单击它们时,没有弹出窗口。它根本没有做任何事情。没有 JS 错误,只是没有任何反应。我错过了什么?

我查看了 NerdDinner 代码,但在试图找出导致弹出窗口发生的确切原因时遇到了麻烦。我不一定需要有人告诉我我的应用出了什么问题,我只需要知道我在 NerdDinner 应用中寻找的导致它发生的原因,以便我可以将其与我的进行比较。

我正在使用以下代码来呈现按钮:

@model dynamic
@using DotNetOpenAuth.Mvc;
@using DotNetOpenAuth.OpenId.RelyingParty;
<div id="login-oauth">
    <fieldset>
        <legend>via 3rd Party (recommended)</legend>
        @using (Html.BeginForm("LogOnPostAssertion", "Auth"))
        {
            @Html.Hidden("ReturnUrl", Request.QueryString["ReturnUrl"], new { id = "ReturnUrl" })
            @Html.Hidden("openid_openidAuthData")
            <div>
                @MvcHtmlString.Create(Html.OpenIdSelector(new SelectorButton[] {
new SelectorProviderButton("https://me.yahoo.com/", Url.Content("~/Content/images/yahoo.gif")),
new SelectorProviderButton("https://www.google.com/accounts/o8/id", Url.Content("~/Content/images/google.gif")),
new SelectorOpenIdButton(Url.Content("~/Content/images/openid.gif")),
}))
                <div class="helpDoc">
                    <p>
                        If you have logged in previously, click the same button you did last time!!
                    </p>
                </div>
            </div>
        }
    </fieldset>
</div>
@{     
    var options = new OpenIdSelector();
    options.TextBox.LogOnText = "Log On";
}
@MvcHtmlString.Create(Html.OpenIdSelectorScripts(options, null))

编辑:这发生在所有浏览器中,并且没有弹出窗口阻止程序。

【问题讨论】:

  • 可能是浏览器特有的行为吗?我看到你正在使用 Chrome。您在 IE 和 FireFox 中尝试过吗?
  • 您是否开启了弹出窗口拦截器?
  • 很抱歉应该提到这一点。发生在所有浏览器中。
  • 另外,没有弹出窗口拦截器。

标签: c# jquery openid nerddinner


【解决方案1】:

出于某种原因,将 global.asax.cs 中的以下路由更改为:

routes.MapRoute(
    "OpenIdDiscover",
    "Auth/Discover");

到:

routes.MapRoute(
    "OpenIdDiscover",
    "Auth/Discover",
    new { controller = "Auth", action = "Discover" }
);

似乎已经解决了这个问题。不知道为什么,但是用 Firebug 查看请求显示尝试访问此路由时出现 500 错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2023-03-06
    • 2020-02-15
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多