2012-03-09 108 views
0

我在我的網站上安裝了Janrain社交登錄窗口小部件,並正在使用AJAX處理身份驗證請求。重新加載janrain部件

在某些情況下,即使社交網站(例如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之後。

想法?謝謝!

回答

0

我認爲問題在於你還沒有在Janrain註冊localhost url。嘗試進入「部署」選項卡下的「應用程序設置」,並將其本地URL添加到它。像localhost之類的東西。

然後將您的令牌網址更改爲您的着陸頁。像...

janrain.settings.tokenUrl = 'https://localhost:8000/home' 

祝你好運!