0

ユーザーがログインした後、Facebook APIログインポップアップを閉じて、ユーザーがFacebook画像でログインをクリックした後、ポップアップが正常に開き、ユーザーがポップアップウィンドウにログインした後、ポップアップはそこに残り、正常にログインしたWebサイトにリダイレクトしますただし、ユーザーが正常にログインした後にポップアップを閉じ、親ログインページをメインページにリダイレクトします。

ありがとうございました、

これが私がしたことです:

Javascriptのもの:

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
    appId      : '<?php echo $_setting['facebook_api']; ?>',
    channelUrl : '//<?php echo $website; ?>/channel.html',
    status     : true,
    cookie     : true,
    xfbml      : true
});
 };



    (function(d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
    </script>
<script type="text/javascript">

function popup(url)
{

 var width  = 600;
 var height = 400;
 var left   = (screen.width  - width)/2;
 var top    = (screen.height - height)/2;
 var params = 'width='+width+', height='+height;

 params += ', top='+top+', left='+left;
 params += ', directories=no';
 params += ', location=no';
 params += ', menubar=no';
 params += ', resizable=no';
 params += ', scrollbars=no';
 params += ', status=no';
 params += ', toolbar=no';

 newwin=window.open(url,'FB', params);
 opener.location.reload();
 if (window.focus) {newwin.focus()}

 return false;

 }

 </script>

ユーザーログイン部分:

<a href="javascript:void(0)"
onclick="popup('https://www.facebook.com/dialog/oauth?client_id=<?php echo $_setting['facebook_api']; ?>
&redirect_uri=<?php echo urlencode($website."/index.php"); ?>
&cancel_url=<?php echo urlencode($website."/register"); ?>
&scope=email')">
<img src="<?php echo $website; ?>/images/fb.png" /></a>
4

2 に答える 2

1

「window.parent.location="www.pageafterlogin"; window.close();」を出力するだけです。子ウィンドウではうまくいきませんでした。子ウィンドウ(ポップアップ)が閉じているかどうかを確認するために、間隔を使用する必要がありました。

これは私がそれを機能させるために書いた関数です(私のログインボタンは「facebook_connect」に設定されたクラスを持つアンカーです):

$(document).ready(function() {
    initFacebookConnect();
});

var fbTimer, fbChildWindow;
function fbPolling() {
    if(fbChildWindow && fbChildWindow.closed) {
        // The popup has been closed, stop the timer and reload window.
        clearInterval(fbTimer);
        window.location.href = window.location.href;
    }
}
function initFacebookConnect() {
    $('a.facebook_connect').click(function(event) {
        event.preventDefault();

        var url = $(this).attr('href');
        fbChildWindow = window.open(url, 'Facebook', 'status=1, resizable=0');
        fbTimer = setInterval('fbPolling()', 1000);
    });
}

Facebookがリダイレクトするページ(redirect_uriページ)の中に、私は次のように書いています。

<script>window.close();</script>

これが誰かに役立つことを願っています:)

于 2012-12-12T23:50:42.127 に答える
0

ページにリダイレクトするにはログインが必要です window.close() を実行し、メインページページを window.parent を使用して必要なページにリダイレクトします

ログインがリダイレクトされるページ(ポップアップ内)にコードを追加してみてください window.parent.location ="www.pageafterlogin"; window.close();

私は現在携帯電話から書いているので少し難しいですが、それでうまくいくはずです。そうでない場合は、明日書き直します。

于 2012-09-27T22:19:17.190 に答える