2

次の PHP コードを使用して、データベースから Facebook のファン ページにランダム メッセージを発行します。

require_once('src/facebook.php');
$appid = 'MY_APP_ID';
$appsecret = 'APP_SECRET';
$pageid = 'MY_PAGE_ID';
$token = 'MY_ACCESS_TOKEN';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => $appid,
  'secret' => $appsecret,
));

$message = 'Hello World';

//Information that makes up the facebook page post
$attachment = array(
        'access_token' => $token,
        'message' => $message
);

//Try to post to the facebook page
try{
$res = $facebook->api('/'.$pageid.'/feed','POST',$attachment);

} catch (Exception $e){

    echo $e->getMessage();
}

そしてここにありますsrc/facebook.php- https://github.com/facebook/facebook-php-sdk/blob/master/src/facebook.php

しかし、次のようなエラー メッセージが返されます。

Error validating access token: Session has expired at unix time 1339020000. The current unix time is 1339022625.

私の質問は、私のコードでどのような変更を行うべきですか?

PS: セッションの有効期限に関する関連する質問も調べましたが、どれも役に立ちませんでした。

前もって感謝します。

4

1 に答える 1

0

この場合、ページアクセストークンではなく、ユーザーアクセストークンを使用していると想定しています。

manage_pagesページのアクセストークンを取得するためのアクセス権を付与する権限を使用して、アプリケーションに対して認証を行う必要があります。これらは有効期限が長くなります。

この権限を承認し、現在のユーザーの有効なアクセストークンを取得した後、次のエンドポイントにリクエストを送信して、管理しているページとアプリケーションのリストを取得する必要があります。

https://graph.facebook.com/me/accounts?access_token=USER_ACCESS_TOKEN

この応答には、これらのページとアプリケーションのアクセストークンが含まれています。

{
  "data": [
    {
      "name": "PAGE_TITLE", 
      "access_token": "PAGE_ACCESS_TOKEN", 
      "category": "PAGE_CATEGORY", 
      "id": "PAGE_ID"
    }, 

あなたはここでこれについてのより多くの情報を見ることができます:

https://developers.facebook.com/docs/authentication/pages/

更新しました

期限切れのアクセストークンの場合は、ブラウザを介してアプリにアクセスし、認証フローに従ってユーザーを再認証する必要があります。

これを処理する方法に関するドキュメントはここにあります:http: //developers.facebook.com/docs/authentication/access-token-expiration/

その後、より長寿命のアクセストークンをリクエストできますが、これらはまだ有効期限が切れています。シナリオ4で、これらのいずれかをリクエストする方法に関する情報を確認できます。http: //developers.facebook.com/roadmap/offline-access-removal/

于 2012-06-07T14:32:53.157 に答える