3

Facebookに接続しているユーザーをリダイレクトしたいのですが、Facebookに接続していない迷惑なユーザーにはリダイレクトしません。どうやってするの?Facebookからデータを取得するためにこのコードを使用しています。このコードは、Wordpress に基づいて、私のページの最初の行で実行されます。

this_code_php:

<?PHP

session_start();
    require 'facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'my_number_here',
  'secret' => 'my_number_here',
  'cookie' => true
));

// Get User ID
$user = $facebook->getUser();

if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();

  //echo '$logout '.$logoutUrl;
} else 
{ $loginUrl = $facebook->getLoginUrl();
  //echo '$login '.$loginUrl;
 echo "<script type='text/javascript'>top.location.href = '$logoutUrl';</script>";

 }
?>

facebook への接続とアプリケーションへの LOGGING には違いがあります。ユーザーがFacebookに接続していることがわかっている場合(たとえば、Facebookタブを開いている場合)、すべてのFacebookデータを含むページに自動的にリダイレクトしたいことに注意してください。ただし、Facebookのログインページで他のユーザー(Facebookに登録していないユーザー)に迷惑をかけることはありません。それらが接続されている場合 - OK - Facebook データで私のページにリダイレクトさせてください。そうでない場合は、Facebook のログインを忘れ、Facebook のデータを忘れてしまいます。Facebook は使用しないでください。問題は次の行です: echo "top.location.href = '$logoutUrl';";

どんなプログラムをしますか? ユーザーが facebook に接続している場合 - プログラムは次にリダイレクトされ、ユーザーはアクションが実行されたかどうかを知りませんでした。ただし、ユーザーがユーザー ログイン ページを表示する facebook プログラムに接続していない場合、ユーザーであっても facebook に登録されていません。

上記の行を次の行に置き換えたい: if (/ user is connected /) echo "top.location.href = '$logoutUrl';";

しかし、ユーザーが現在Facebookに接続しているかどうかを確認する方法がわかりませんか? それが PHP で可能な場合、または PHP と Javascript をリンクする必要がある場合は、少し難しくなります。そして、それを行う方法は?

4

3 に答える 3

3

CBroeは正しいです。ユーザーのステータスをクライアント側で確認する必要があります。CBroe が言ったことに詳細を追加するために、このドキュメントは役に立つ例を示しています。

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    // the user is logged in and has authenticated your app
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  } else if (response.status === 'not_authorized') {
    // the user is logged in to Facebook, 
    // but has not authenticated your app
  } else {
    // the user isn't logged in to Facebook.
  }
 });

これをサポートするために以前の回答へのコメントとして投稿したかったのですが、コメントフォームは改行を無視します...

于 2012-12-03T13:43:52.917 に答える
1

別のオプションは、ユーザーが $facebook->getUser() を使用することです。Facebook にログインしていない場合、これは 0 を返します。

于 2012-12-05T00:17:21.647 に答える
0

アプリにまだ接続していないユーザーには、現在 Facebook にログインしているかどうかに関係なく、まったく情報が得られません。

ユーザーがアプリに接続したらFB.getLoginStatus、JavaScript SDK から使用して、現在 Facebook にログインしているかどうかを判断できます。

これはクライアント側で行う必要があります。なぜなら、クロスドメイン リクエストを作成して facebook.com ドメインに設定された Cookie をチェックできるのは JS SDK だけだからです。これはサーバー側では不可能です。

クライアント側でステータスを特定すると、PHP SDK は次のリクエストでこれを取得できます。

于 2012-12-03T13:11:55.933 に答える