我已经在我的网站上有了Janrain社交登录小部件,并且正在使用AJAX处理身份验证请求。
在某些情况下,即使成功登录了社交网站(比如Twitter),我也想阻止登录我的网站。
当发生这种情况时,Janrain小部件仍然显示“正在加载...”,即使没有更多的事情可做。然而,我希望用户能够尝试通过另一个网站再次登录(比如说,Facebook)。
目前,实现这一点的唯一方法是刷新整个页面。不一定方便,但也不是很大的负担。尽管如此,我还是想避免这方面的要求。
这是我的代码-几乎完全复制/粘贴了Janrain提供的内容:
//Initialization of the widget on page load
(function() {
if (typeof window.janrain !== 'object') window.janrain = {};
window.janrain.settings = {};
janrain.settings.tokenUrl = THE_URL
janrain.settings.tokenAction='event';
function isReady() { janrain.ready = true; };
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", isReady, false);
} else {
window.attachEvent('onload', isReady);
}
var e = document.createElement('script');
e.type = 'text/javascript';
e.id = 'janrainAuthWidget';
if (document.location.protocol === 'https:') {
e.src = 'https://rpxnow.com/js/lib/(domain)/engage.js';
} else {
e.src = 'http://widget-cdn.rpxnow.com/js/lib/(domain)/engage.js';
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
})();
//Handler for AJAX authentication
function janrainWidgetOnload(){
janrain.events.onProviderLoginToken.addHandler(function(tokenResponse) {
$.ajax({
//(blah blah blah)
});
});
}
<!-- Widget is inserted into this named DIV -->
<div id="janrainEngageEmbed"></div>我尝试使初始化函数成为一个命名函数,然后在页面加载时显式调用该函数。即使这对小部件的初始化有效,再次调用它也会失败-即使在进行jQuery调用以杀死插入小部件的目标DIV中的所有HTML之后。
想法?谢谢!
发布于 2012-05-23 12:19:36
我认为问题在于你还没有向Janrain注册本地主机url。尝试转到“部署”选项卡下的“应用程序设置”,并将本地url添加到其中。类似于localhost。
然后将您的令牌url更改为您的登录页面。比如..。
janrain.settings.tokenUrl = 'https://localhost:8000/home'祝好运!
https://stackoverflow.com/questions/9628122
复制相似问题