質問

FB Connectを使用するWebアプリ(PHP)を構築しています。Facebook が提供する PHP ライブラリを使用して、ユーザーの登録/サインインに成功しました。このコードを使用してウォールに投稿することもできます

        Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
    Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;               
    $facebook = new Facebook(array(
      'appId'  => $fb_key,
      'secret' => $fb_secret,
      'cookie' => true, // enable optional cookie support
    ));
    $session = $facebook->getSession();
    if ($session)
    {
        $facebook->api('/me/feed', 'POST', array('message'=>$message, 'link'=>$link['href'], 'name'=>$link['text']));                   
    }

ただし、ブラウザの Cookie マネージャーに手動でアクセスして、FB セッションを保存する Cookie を削除すると、コードは機能しません。私が持っているのは、DBに保存しているユーザーのFB IDだけです。FBセッションが失われた場合でも、ユーザーのウォールに投稿する方法はありますか?ユーザーの FB アクセス トークンを DB に保存して後でウォールに投稿するのは意味があるのでしょうか、それともアクセス トークンの有効期間は比較的短いのでしょうか?

私のアプリで発生する可能性のある状況の例を次に示します。ユーザーが FB ボタンをクリックすると、私のアプリが認証され、私のサイトにリダイレクトされて、FB から提供されたデータに基づいてアカウントが自動的に作成されます。また、後でこのユーザーにサインインできるように、ユーザーの FB ID も保存します。今、彼はサイトを閲覧し、何らかの情報を入力すると、その情報が自分のウォールに投稿されます。ユーザーのブラウザには FB によって作成された Cookie が保持されているため、これまでのところすべて問題ありません。ここで、ユーザーはサイトを離れ、サイト管理者に連絡します。管理者は自分のブラウザを開き、管理インターフェイスに移動し、このユーザーに代わって何かを投稿します。さて、そのユーザーの FB ID があり、そのユーザーが権限を取り消していないと仮定しても、これを彼のウォールに投稿できますか?

役に立ちましたか?

解決

アップデート:offline_access が非推奨になったため、この回答は無効になりました。

offline_access 権限をリクエストする必要があります。チェックしてください 権限 博士。

編集 更新とコメントによると、offline_access の削除に関する情報がいくつか見つかります。 ここ.

他のヒント

FacebookのPHP SDK v3のでははgithubのの上を参照)、聞いて非常に簡単ですそしてユーザーオフラインアクセストークンを使用します。ここではあなたがそれを行う方法です。

のGetオフラインアクセストークン

まずユーザーがいないか、ログインしているかどうかをチェックます:

require "facebook.php";
$facebook = new Facebook(array(
  'appId'  => YOUR_APP_ID,
  'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    $user = null;
  }
}

彼がいない場合は、あなたがoffline_accessの許可を求める「ログインFacebookの持つ」URLを生成します:

if (!$user) {
    $args['scope'] = 'offline_access';
    $loginUrl = $facebook->getLoginUrl($args);
}

そして、あなたのテンプレートにリンクを表示します:

<?php if (!$user): ?>
    <a href="<?php echo $loginUrl ?>">Login with Facebook</a>
<?php endif ?>
ユーザーがログインしているとき、

次に、オフラインアクセストークンを取得し、それを保存することができます。それを得るために、呼び出します:

if ($user) {
    $token = $facebook->getAccessToken();
    // store token
}

を使用するオフラインアクセストークン

は、ユーザーがログインしていないときにトークンオフラインアクセスを使用します:

require "facebook.php";
$facebook = new Facebook(array(
  'appId'  => YOUR_APP_ID,
  'secret' => YOUR_APP_SECRET,
));

$facebook->setAccessToken("...");

そして今、あなたはこのユーザーのAPI呼び出しを行うことができます:

$user_profile = $facebook->api('/me');

期待して役立ちます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top