0

facebook php sdkを使用していて、別のファイルで値を取得したいので、リダイレクトパスを指定します。ログイン後、ページに表示されますが、$ userが空白です。ページを更新すると、値が取得されます。 。私のコードは以下のようなものですログインページが呼び出しているところから:

$facebook = new Facebook(array('appId'  =>FB_APP_ID ,'secret' => FB_APP_SECRET));
                                                   $scope='email,user_birthday,user_location,user_work_history,user_about_me,user_hometown';
                                                $parameters=array("redirect_uri"=>"http://www.xyz.com//test.php","scope"=>$scope);
                                                $login_url= $facebook->getLoginUrl($parameters);

test.phpは以下のようになります

$facebook = new Facebook(array(
        'appId'  => '224402951020359' ,
        'secret' => 'd2731260cdd7425dc11eee5f265a3dee'

        ));

        $user = $facebook->getUser();

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

            error_log($e);
            $user = null;
          }
        }

        print_r($user_data);

どうすれば初めて値を取得できますか。

4

1 に答える 1

0

test.php ページで !$user のテストを行い、true の場合は再度 loginurl にリダイレクトします...次のようなコードで、この同じ問題を回避します。

    $loginUrl = $facebook->getLoginUrl(
        array(
            'scope' => 'email,publish_stream,user_birthday,user_location'
        )
);

if ($user) {
  try {
    //get user basic description
    $userInfo = $facebook->api("/$user");
    $fb_access_token = $facebook->getAccessToken();
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    error_log('Sharebox: '.$e); // d is a debug function defined at the end of this file
    $user = null;
  }
}

if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    exit;
}

お役に立てれば。

于 2012-11-22T22:34:15.377 に答える