我正在尝试使用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;
到脚本的顶部允许它至少运行并显示警报。但仍然没有图像...我想进一步调查。