0

ついにFacebookのログインが機能するようになったので、ユーザーから情報を取得できます

<?php
    session_start();

    require_once 'facebook.php';

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

    $user_id = $facebook->getUser();

?>

<html xmlns:fb="http://www.facebook.com/2008/fbml">

<head>

<title>Picture</title>

</head>

<body>

<?php 

if($user_id) {

  // We have a user ID, so probably a logged in user.
  // If not, we'll get an exception, which we handle below.
  try {
    $test = null;
    $user_profile = $facebook->api('/me','GET');
    //$test = $user_profile['id'];
    echo "id: " . $user_profile['id'];

  } catch(FacebookApiException $e) {
    // If the user is logged out, you can have a 
    // user ID even though the access token is invalid.
    // In this case, we'll get an exception, so we'll
    // just ask the user to login again here.
    $login_url = $facebook->getLoginUrl(); 
    echo 'Please <a href="' . $login_url . '">login.</a>';
    error_log($e->getType());
    error_log($e->getMessage());
  }   
} else {

  // No user, print a link for the user to login
  $login_url = $facebook->getLoginUrl();
  echo 'Please <a href="' . $login_url . '">login.</a>';

}

?>

</div> 

</body>

</html>

APP(Authenticated)にログインしていないので、このすべてのコードでログインできます。ボタンを押すと、エコーするので自分の情報を見ることができます。

次に、ページの別のボタンを押すと、次のようになります。

<form action="<?php echo 'single_picture.php?argument=' . $picture_id ?>" method="post">
<input type="submit" name="submit" value="Vote!">
</form>

同じページをもう一度開きますが、ログインボタンが再び表示され、ログインしていることをすべて忘れてしまいました。

if/elseがログインしているかどうかをチェックしていると思いました。

アクセストークンも印刷してみました

$access_token = $facebook->getAccessToken();

次に、それを次の場所に配置します:http: //developers.facebook.com/tools/debug

これは、アクセストークンが1時間有効であることを示しています

私は何が間違っているのですか?

4

3 に答える 3

1

Facebook から取得したアクセス トークンをどこかに保存する必要があります。セッション、データベーステーブル、または単純なテキストファイルです。neyt リクエストの前に、$facebook->setAccessToken($saved_access_token);有効である限り、このトークン ( ) を設定します。

于 2012-10-09T12:37:38.443 に答える
0

まず第一に、あなたの文法はとても混乱しています。session_start を使用するのを忘れたと思います

<?php session_start() ?>

またはCookieを確認してください。

于 2012-10-09T12:35:14.770 に答える
0

これはあなたが望んでいるものではないことを私は知っています。あなたは私にあなたの問題を与えました。私はあなたに別の答えを与えていますが、これを提案として受け取ってください. Facebook ログインを使用するときに私が行うことは、独自のログイン システムを作成し、Facebook ユーザー用にユーザーの Facebook ID を格納する別のテーブルを用意し、Facebook API のみを使用してデータベースに対してその情報が有効かどうかを確認することです。そうである場合は、ユーザーをログインさせます。そうでない場合は、ユーザーをエラー ページまたはサインアップ ページに送ります。

于 2013-09-19T05:07:27.873 に答える