0

サイトに Janrain ソーシャル ログイン ウィジェットを配置し、AJAX で認証要求を処理しています。

特定の状況で、ソーシャル サイト (Twitter など) へのログインが成功した場合でも、自分の Web サイトへのログインを防止したいと考えています。

これが発生すると、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>

初期化関数を名前付き関数にしてみました。この関数は、ページの読み込み時に明示的に呼び出されます。ウィジェットの初期化には機能しますが、ウィジェットが挿入されているターゲット DIV 内のすべての HTML を削除するために jQuery 呼び出しを行った後でも、再度呼び出すと失敗します。

アイデア?ありがとう!

4

1 に答える 1

0

問題は、ローカルホストのURLをまだJanrainに登録していないことだと思います。[展開]タブの[アプリケーション設定]に移動し、ローカルURLを追加してみてください。ローカルホストのようなもの。

次に、トークンのURLをランディングページに変更します。お気に入り ...

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

幸運を!

于 2012-05-23T04:19:36.210 に答える