2010-11-29 5 views
2

Ich versuche, die Openid-Selektor-Javascript-Bibliothek verwenden, um OpenId-Anmeldung für eine Website zu ermöglichen. Ich befolge die Anweisungen auf this site, aber ich bin normalerweise nicht ein Web-Programmierer und es funktioniert nicht und ich bin mir nicht sicher warum. Ich bin sicher, es ist etwas ziemlich trivial, aber ich kann es nicht sehen.Probleme bei der Integration von openId-Selektor mit Asp.Net MVC 2

Das Problem ist, dass kein Bild mit den offenen Id-Bits auf der Stelle gerendert wird, wo es hingehen sollte, das ist die <div id="openid_btns"></div> Ich nehme an. Dies scheint mir darauf hinzuweisen, dass die Funktion, die den Inhalt dieses div setzen soll, nicht ausgeführt wird.

Ich vermutete die Skripte.

Ich habe die Skriptverweise auf die Site.Master hinzugefügt, wie es zeigt:

<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> 

und es scheint, auf jeder Seite, um die Funktion aufzurufen (die Warnung angezeigt wird) und es sollte dann gehe ich davon aus, Rufen Sie die Funktion openid.init auf.

wird dies im openid-jquery.js Skript definiert:

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); 
    } 

wieder ich die alert("initialising"); gegeben, die nie aufgerufen zu sein scheint.

Sollte es diese Funktion aufrufen? Wie kann ich feststellen, warum diese Funktion nicht aufgerufen wird? Irgendwelche Ideen?

UPDATE:

im Dokument bereit Funktion i die Reihenfolge der Funktionen wie so vertauscht:

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

und jetzt wird der Alarm nicht ausgelöst. was bedeutet das? geht in der anderen Funktion etwas schief? wie kann ich sagen, was es ist?

UPDATE 2:

Wierd. Wenn ich die openid-jquery.js-Datei in etwas umbenennen (scheinbar alles andere) (wie openid-jquery.2.js), dann kann ich die Warnung vom offenen ID-Skript sehen.

aber es scheint nur die Warnung und nicht die nächste Zeile auszuführen, als wenn ich später eine weitere Änderung (dh nach der nächsten Zeile) die zweite Warnung nie gesehen wird. nicht sicher, warum das auch so sein würde.

UPDATE 3: Nach Debuggen in Chrom es das Problem scheint war, dass providers_large, providers_small nicht definiert wurden, und fügt hinzu:

var providers_large; 
var providers_small; 

an die Spitze des Skripts es laufen zumindest erlaubt und die Warnungen zu zeigen. aber immer noch keine Bilder ... weitere Untersuchung denke ich.

Antwort

2

so scheint es, in Schritt 4 der Anweisungen, dass es aktualisiert werden muss, das Englisch Javascript-Provider Informationen, die ist hinzuzufügen, wo die provider_large definiert ist, etwa so:

<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

Leichte Update Antwort Sams oben für Version 1.3.

entpackten Dateien:

C: \ Blah \ openid-Selektor-1.3 \ openid-Selektor \ js \ openid-en.js

Script Tag:

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

0

Ich hatte das gleiche Problem, überprüfen Sie Ihre web.config und fügen Sie die Berechtigung für alle Benutzer in diese neuen Verzeichnisse, und funktioniert dann