2012-10-04 85 views
2

它是一個漫長的奇怪之旅,在我的旅行中使用Janrain客戶端身份驗證過程來驗證用戶的整個身份驗證過程,但我終於得到它的工作,但...janrain搞模式彈出窗口將不會關閉onProviderLoginToken事件

如何在獲取令牌後關閉模態彈出窗口,然後使用$ .ajax get方法來對付我的WebApi控制器之一,從而獲取用戶信息?

整個過程效果很好,我得到我需要的用戶配置文件信息,但在執行我的ajax調用WebApi控制器並在頁面上填充div標籤後,模態窗口仍處於打開狀態Facebook徽標說「登錄....」

我不允許發佈圖片,但如果你想看到冷凍模態的圖像,你可以在這裏查看它「http://oi46.tinypic .com/34s1nax.jpg「

幫助!我是否錯過了最後一個關閉模式的命令?

下面是我已經有的一些代碼。

(function() { 
if (typeof window.janrain !== 'object') window.janrain = {}; 
window.janrain.settings = {}; 

janrain.settings.tokenUrl = 'http://localhost:20000/login.html'; 
janrain.settings.tokenAction = 'event'; 
janrain.settings.type = 'modal'; 
janrain.settings.linkClass = 'janrainEngage'; 


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/idrinkticket/engage.js'; 
} else { 
    e.src = 'http://widget-cdn.rpxnow.com/js/lib/idrinkticket/engage.js'; 
} 

var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(e, s); 
})(); 



function janrainWidgetOnload() { 
janrain.events.onProviderLoginStart.addHandler(function() { 
    console.log('Login Start!'); 
}); 
janrain.events.onProviderLoginComplete.addHandler(function (response) { 
    console.log('Login complete!'); 
    console.log('response.provider = ' + response.provider); 
}); 
janrain.events.onProviderLoginError.addHandler(function (response) { 
    console.log('Login Error!'); 
    console.log('response.err.code = ' + response.err.code); 
    console.log('response.err.msg = ' + response.err.msg); 
    console.log('response.origin = ' + response.origin); 
    console.log('response.state = ' + response.state); 
}); 
janrain.events.onProviderLoginSuccess.addHandler(function (something) { 
    console.log('Login Succcess!'); 
}); 
janrain.events.onReturnExperienceFound.addHandler(function (response) { 
    console.log('Return Experience Found!'); 
    console.log('response.name = ' + response.name); 
    console.log('response.returnProvider = ' + response.returnProvider); 
    console.log('response.welcomeName = ' + response.welcomeName); 
}); 
janrain.events.onProviderLoginToken.addHandler(function (response) { 
    console.log('Provider Login Token Returned!'); 
    console.log('response.token = ' + response.token); 

    $.ajax({ 
     url: "http://localhost:30001/Engage", 
     type: "get", 
     data: ({ token: response.token }), 
     dataType: "json", 
     success: function (data) { 
      $('#results').append(data.Identifier); 
      $('#results').append(data.ProviderName); 
      $('#results').append(data.DisplayName); 
     }, 
     error: function (xhr, status, p3, p4) { 
      console.log(xhr); 
      console.log(status); 
      console.log(p3); 
     } 
    }); 
}); 
} 



<a class="janrainEngage" href="#">LOGIN</a> 
<br /><br /> 

<div id="results"></div> 
+0

我想給予好評你的問題至少10倍!非常感謝你!!!! – Nizam

回答

3

可以使用janrain.engage.signin.modal.close()成功或錯誤的

1

也可以嘗試這個,

janrain.events.onProviderLoginComplete.addHandler(function (response) { 
    janrain.engage.signin.modal.close(); 
});