2010-11-29 2 views
2

Я пытаюсь использовать библиотеку javascript openid selector, чтобы разрешить вход OpenId для веб-сайта. Я следую инструкциям на this site, но я обычно не программист и не работаю, и я не уверен, почему. Я уверен, что это что-то довольно тривиальное, но я не вижу этого.Проблемы с выбором селектора openId с Asp.Net MVC 2

Проблема в том, что изображение с открытыми битами Id на нем не отображается в том месте, куда оно должно идти, которое является <div id="openid_btns"></div>. Я предполагаю. Это, по-видимому, указывает мне, что функция, которая должна устанавливать содержимое этого div, не запускается.

Я подозревал сценарии.

Я добавил ссылки сценария к Site.Master, как это показывает:

<script type="text/javascript" src="../../Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="../../Scripts/openid-jquery.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("document ready"); // <- I added this to verfiy that this is being called 
     openid.init('openid_identifier'); 
    }); 
</script> 

и, кажется, вызов функции на каждой странице (предупреждение показано), и он должен тогда, я полагаю, вызовите функцию openid.init.

это определено в openid-jquery.js сценария:

var openid = {  
version: '1.2', // version constant 
demo: false, 
demo_text: null, 
cookie_expires: 6 * 30, // 6 months. 
cookie_name: 'openid_provider', 
cookie_path: '/', 

img_path: '../images/', 
lang: null, // language, is set in openid-jquery-<lang>.js 
signin_text: null, // text on submit button on the form 
input_id: null, 
provider_url: null, 
provider_id: null, 
all_small: false, // output large providers w/ small icons 
no_sprite: false, // don't use sprite image 
image_title: '{provider}', // for image title 

init: function (input_id) { 
    alert("initialising"); 
    providers = $.extend({}, providers_large, providers_small); 

    var openid_btns = $('#openid_btns'); 

    this.input_id = input_id; 

    $('#openid_choice').show(); 
    $('#openid_input_area').empty(); 

    var i = 0; 
    // add box for each provider 
    for (id in providers_large) { 
     if (this.all_small) { 
      openid_btns.append(this.getBoxHTML(id, providers_large[id], 'small', i++)); 
     } else 
      openid_btns.append(this.getBoxHTML(id, providers_large[id], 'large', i++)); 
    } 
    if (providers_small) { 
     openid_btns.append('<br/>'); 

     for (id in providers_small) { 

      openid_btns.append(this.getBoxHTML(id, providers_small[id], 'small', i++)); 
     } 
    } 

    $('#openid_form').submit(this.submit); 

    var box_id = this.readCookie(); 
    if (box_id) { 
     this.signin(box_id, true); 
    } 

снова я добавил alert("initialising");, который никогда, кажется, называется.

Должно ли это называться этой функцией? Как я могу определить, почему эта функция не вызывается? Есть идеи?

UPDATE:

в готовом документе функции я выгружена порядок функций следующим образом:

<script type="text/javascript"> 
    $(document).ready(function() {    
     openid.init('openid_identifier'); 
     alert("document ready"); 
    }); 
</script> 

и теперь предупреждение не поднимается. что это значит? что-то не так в другой функции? как я могу сказать, что это такое?

ОБНОВЛЕНИЕ 2:

Wierd. Если я переименую файл openid-jquery.js на что-то (похоже, что-то еще) (например, openid-jquery.2.js), я могу увидеть предупреждение из открытого сценария id.

но похоже, что это предупреждение, а не следующая строка, как при добавлении другого изменения позже (т.е. после самой следующей строки) второе предупреждение никогда не будет видно. не знаю, почему это было бы.

UPDATE 3: После отладки в хроме, кажется, проблема в том, что providers_large, providers_small не были определены и добавления:

var providers_large; 
var providers_small; 

к началу сценария позволило ему, по крайней мере, запустить и показать предупреждения. но все равно нет изображений ... Дальнейшее расследование я думаю.

ответ

2

так что кажется, что в шаге 4 инструкции он должен быть обновлен, чтобы добавить английский Javascript поставщика информации, который является, где provider_large определена, например, так:

<script type="text/javascript" src="../../Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="../../Scripts/openid-jquery.js"></script> 
<script type="text/javascript" src="../../Scripts/openid-jquery-en.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("document ready"); // <- I added this to verfiy that this is being called 
     openid.init('openid_identifier'); 
    }); 
</script> 
1

Незначительное обновление для ответа Сэма выше для версии 1.3.

распакованные файлы:

C: \ Blah \ OpenID-селектор-1,3 \ OpenID-селектор \ JS \ OpenID-en.js

Script Tag:

<script type="text/javascript" src="../../Scripts/openid-en.js"></script>

0

У меня была такая же проблема, проверьте ваш web.config и добавьте разрешение всем пользователям на эти новые каталоги, а затем заработает

Смежные вопросы