Как заставить работать всплывающее окно OpenID 'NerdDinner' - PullRequest
1 голос
/ 23 сентября 2011

Поэтому я пытаюсь реализовать OpenID, используя NerdDinner 2 в качестве примера.Когда вы нажимаете на одного из поставщиков 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))

EDIT : это происходит во всех браузерах и нет блокировщиков всплывающих окон.

enter image description here

1 Ответ

2 голосов
/ 23 сентября 2011

Почему-то изменили следующий маршрут в global.asax.cs из:

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

до:

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

Кажется, это решило проблему. Не знаю почему, но просмотр запросов с Firebug показал 500 ошибок при попытке доступа к этому маршруту.

...