2

php-sdkを使用して、fbを介してサイトにログインしたときにセッションを作成しています。ログインすると、ユーザーはfb_redirect.phpというファイルにリダイレクトされます。そのページには、次のものがあります。

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

$access_token = $facebook->getAccessToken();
//$facebook->setAccessToken($access_token); // you do not need to set the token if there is one, so this should be conditional to if your switching tokens or setting a token from an external sdk.

いつ

$access_token 

ここにエコーされ、ユーザートークンが表示されます。ただし、別のページでは、アプリが要求したpublish_actions権限を利用して、カスタムアクションをユーザーのタイムラインに投稿する必要があります。そのためには、アクセストークンをユーザートークンに設定する必要があります。ただし、何らかの理由で、他のページでは、$access_tokenは常にユーザートークンではなくアクセストークンに設定されます。手動でユーザートークンに戻すにはどうすればよいですか?

4

2 に答える 2

2

サーバー側のフローを使用する場合は、それをどこかに保存し(Cookie、サーバー側のセッション、またはDBテーブル)、ユーザーが戻ってきたときにロードし直す必要があります。

于 2013-03-27T08:31:35.557 に答える
0

迅速で汚い方法、これは有効期限を処理しません。

if (!$_SESSION['fb_YourAppID_access_token']) {
$access_token = $facebook->getAccessToken();
if ($access_token) {
$_SESSION['your_token'] = $access_token;
}
}else{
$access_token = $_SESSION['fb_YourAppID_access_token'];
$_SESSION['your_token'] = $access_token;
}

これにより、ブラウザで既存のトークンが検索されます。見つからない場合は、現在のトークンが何であるかをphp sdkに尋ねます。sdkにトークンがある場合は、セッショントークンを現在のアクセストークンに設定します。存在しない場合は、保存します。空欄。

于 2013-03-27T09:34:27.497 に答える