0
 $facebook = new Facebook(array(
                'appId'  =>Yii::app()->params['FBappId'],
                'secret' =>Yii::app()->params['secret'] ,
                ));

                // Get User ID
                $user = $facebook->getUser();
              if ($user) {
              try {
                // Proceed knowing you have a logged in user who's authenticated.
                echo $accessToken=$facebook->getAccessToken();
                echo '<br/>';
                $user_profile = $facebook->api('/me');
                print_r($user_profile); echo "normal sdk"; exit;
              } catch (FacebookApiException $e) {
                  echo $e; exit;
                $user = null;
              }
            }
            echo "normal sdk end";exit;

php sdk 3.3.2で試してみましたが、Facebookでユーザーログインすると、トークンの有効期限が切れるまでトークンとユーザー情報が出力されます。約1時間後、トークンデバッガセッションの有効期限が切れたことを確認すると、例外が1回発生し、その後空白の応答が返されます。ただし、別のタブでFacebookにアクセスしています。私の質問は

1.トークンの有効期限が切れたときに、有効なトークンを再度取得するためのinbuildメソッドはありますか?

2.なぜ空白の応答?例外をスローするたびに

4

1 に答える 1

1

Facebookのデバッグツールを使用して、アクセストークンの有効性を確認できます。

通常のアクセストークンは2時間で期限切れになり、拡張トークンは2か月間持続します。

拡張トークンが必要な場合は、次の手順を実行してください:offline_accessの非推奨以降にアクセストークンの有効性を拡張する方法

ええと、$ facebook-> api('/ me');が空白になっている場合。これは単に、ユーザーがまだアプリを承認していないことを意味します。このようなものを試してください-

$user_id = $facebook->getUser();
echo $uid;

if($user_id){
  try {
    $user_profile = $facebook->api('/me');

  } catch (FacebookApiException $e) {
    error_log($e);
    $user_id = null;
  }
}else{
    $login_url = $facebook->getLoginUrl();
    echo("<br>login url=".$login_url);
};
于 2012-12-13T13:23:10.560 に答える