2012-03-09 2 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 для уничтожения всего HTML внутри целевой DIV, где виджет вставлен.

Идеи? Благодаря!

ответ

0

Я считаю, проблема в том, что вы еще не зарегистрировали URL-адрес localhost с Janrain. Попробуйте перейти к настройкам приложения на вкладке «Развертывание» и добавить к нему свой локальный URL-адрес. Что-то вроде localhost.

Затем измените свой токен на целевую страницу. ...

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

Удачи вам!

Смежные вопросы