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.