重新加载janrain小部件

时间:2012-03-09 02:24:56

标签: javascript jquery janrain

我在我的网站上安装了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之后也是如此。

想法?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为问题是你还没有在Janrain注册localhost网址。尝试转到“部署”选项卡下的“应用程序设置”,然后将本地URL添加到其中。像localhost这样的东西。

然后将您的令牌网址更改为您的目标网页。喜欢......

janrain.settings.tokenUrl = 'https://localhost:8000/home'
祝你好运!