2

私はFacebookAPIにまったく慣れていないので、人がFacebookにログインしているかどうかを知るための最も簡単で最速の方法を尋ねたいと思いました。

私が考えた解決策の1つは、javascriptまたはphpリクエストを送信して、その人がログインしているかどうかを示すステータスコードを取得するかどうかを確認することです(たとえば、404が返される場合は、ログインしていないことを意味します)。

アップデート:

私はこの簡単な「ハック」を見つけました:

    function logged() {
    alert('logged');
}
function notlogged() {
    alert('not logged');
}
</script>

<script src="http://www.facebook.com/ajax/composer/attachment/question/question.php" onload="logged()" onerror="notlogged()">

しかし、それは機能しません...しかし、それは私が探しているコードのタイプです..リクエストを送信し、失敗した場合、エラーをスローするコード

**update**

ログインしているかどうかを確認しているユーザーからの疑惑を引き起こしたくないので、app_idを使用している場合は、ユーザーにアプリの使用許可が必要だと思います。これは負担の原因です。別の認証手順を実行する必要があります。

Facebookに関して何らかの方法で認証されていることをユーザーに知らせることはできません

4

4 に答える 4

1

これを試してみてください、これが役立つことを願っています

include 'facebook.php';
$facebook = new Facebook(array(
 'appId'  => $app_id, // your application id
 'secret' => $app_secret, // your application secret
'cookie' => false,
));

$user = $facebook->getUser();


$loginUrl   = $facebook->getLoginUrl(
        array(
            'scope' =>  '// put your permission'
        )
);

if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$permissions = $facebook->api('/me/permissions');   
   } catch (FacebookApiException $e) {
    $user = null;
  }
 }  

 if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
  } 
于 2012-09-13T06:15:37.110 に答える
1

私があなたのコードを正しく読んでいる場合、セッションが返されない場合にのみ、リダイレクトを行いますか?Facebookの例のコメントによると:http://github.com/facebook/php-sdk/blob/master/examples/example.php(この情報に最適な場所ですね?)、セッションを取り戻したとしても、それがまだ有効であるとは思わないでください。ログインしたユーザーを必要とするAPI呼び出しを試すだけで、確実にわかります。これは、ログイン/ログアウトのステータスを確実に判断するために私が見た中で最良の方法です。

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}
于 2012-09-13T06:12:21.267 に答える
0

Facebook の「タブ」がある場合は、signed_request の一部として限定されたユーザー情報が提供されます。また、Facebook タブの場合は、アプリを作成する必要があります。

それ以外の場合は、アプリ ID を使用せずにユーザーに警告することはできません。

過去にいくつかのハッキングがありました。より巧妙なハッキングのいくつかは、コメント ボックスを設置して含まれる DIV の高さを測定すること (ログインすると以前はより大きくなっていました) や、Facebook の FBML タブを含めてログインを表示することでした。ボタン (ログインの方が広かった) が、これらは発見された時点ですべて削除されました。質問で試したリンクについても同じことが言えます。

Facebookは、リピバシーに関するすべての議論のために、故意に情報を漏らすことはありません-アプリIDを取得するまで、ユーザーに尋ねてください。そうすれば、ほとんどすべてを取得できます...

于 2012-09-13T06:30:20.363 に答える