私は自分のサイトにJanrainソーシャルログインウィジェットを置き、AJAXで認証要求を処理しています。janrainウィジェットをリロードする
特定の状況では、ソーシャルサイト(たとえばTwitter)にログインできても、自分のウェブサイトにログインしないようにしたい場合があります。
これが起こると、これ以上行うことはないにしても、「読み込んでいます...」と言われてしまいます。しかし、ユーザーが別のサイト(Facebookなど)から再度ログインできるようにしたいと思います。
現在のところ、これはページ全体を更新するための唯一の方法です。必ずしも便利ではありませんが、大きな負担はありません。それでも、私はこれを要求しないようにしたいと思います。私は初期化機能、ページがロード明示したときに呼び出されるという名前の関数を作ってみた
//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>
:受け付けを開始が提供するもののほとんど正確なコピー/ペースト -
は、ここに私のコードです。それがウィジェットの初期化のために働いていても、ウィジェットが挿入されているターゲットDIV内のすべてのHTMLを終了するためにjQuery呼び出しを行った後でも、再度呼び出しは失敗します。
アイデア?ありがとう!