2010-11-29 49 views
2

我正在嘗試使用openid選擇器JavaScript庫來允許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> 

現在的警報不提高。這是什麼意思?其他功能出錯了嗎?我怎麼知道它是什麼?

UPDATE 2:

Wierd。如果我將openid-jquery.js文件重命名爲其他類似的東西(比如openid-jquery.2.js),那麼我可以看到來自open id腳本的警報。

但它似乎只執行警報而不是下一行,因爲當我在後面添加另一個更改(即在下一行之後)時,第二個警報從未見過。不知道爲什麼會這樣。

更新3: 鉻調試後似乎問題是providers_large, providers_small沒有定義,並補充說:

var providers_large; 
var providers_small; 

到腳本的頂部允許它至少運行並顯示警報。但仍然沒有圖像...我想進一步調查。

回答

2

所以它似乎在說明第4步,需要進行更新,以增加英國這哪裏是provider_large定義,像這樣的JavaScript提供者的信息:

<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:\布拉赫\ OpenID的選擇-1.3 \ OpenID的選擇\ JS \ OpenID的en.js

腳本標籤:

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

0

我有同樣的問題,請檢查您的web.config並將所有用戶的權限添加到這些新目錄,然後運行