2010-11-29 20 views
2

WebサイトのOpenIdログインを許可するためにopenidセレクタのjavascriptライブラリを使用しようとしています。私は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のようなものに変更すると、open idスクリプトから警告が表示されます。

しかし、アラートを実行するように見えるだけで、次の行は次の行を後で追加したとき(つまり、次の行の直後)に2番目のアラートは表示されません。なぜそれがどちらになるのかわからない。

UPDATE 3:スクリプトの先頭には、それは、少なくとも実行し、アラートを表示することができ

var providers_large; 
var providers_small; 

に:それは問題だ Chromeでのデバッグした後は、providers_large, providers_smallが定義され、追加されていないということでした。まだ画像はありません...さらなる調査と思います。

答えて

2

ので、それはそうのような、それはprovider_largeが定義されている場所である英語のjavascriptプロバイダ情報を追加して更新する必要がある命令のステップ4でいるようです:

<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をチェックして、すべてのユーザーにこれらの新しいディレクトリへのアクセス許可を加えてから動作させます。

関連する問題