2012-03-09 3 views
0

私は自分のサイトに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呼び出しを行った後でも、再度呼び出しは失敗します。

アイデア?ありがとう!

答えて

0

私は問題がまだあなたがlocalhostのURLをJanrainに登録していないと思っています。デプロイメントタブのアプリケーション設定に行き、ローカルURLを追加してみてください。 localhostのようなもの。

次に、トークンURLをリンク先ページに変更します。 〜のように...

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

幸運!

関連する問題