2

私はレシピ付きのサイトを持っており、そのサイトには数千人の友人がいる Facebook のグループもあります。グループのタイムラインに新しいレシピを投稿したい。たとえば、1時間ごとにcronで実行できます。

require_once('facebook.php');

    $config = array(
        'appId' => 'xxx',
        'secret' => 'xxx',
    );

    $facebook = new Facebook($config);

    // If not, we'll get an exception, which we handle below.
    try {
        $ret_obj = $facebook->api('/page_id/feed', 'POST',
                                    array(
                                    'link' => 'www.example.com',
                                    'message' => 'Posting with the PHP SDK!'
                                ));
        echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';

    } catch(FacebookApiException $e) {
        echo "error type: ". $e->getType()."<br />";
        echo "error mesage: ". $e->getMessage()."<br />";
    }   

cron デーモンからグループ ページに投稿できるようにスクリプトを変更するにはどうすればよいですか?

スクリプトを少し変更したところ、次のエラーが発生しました: error type: OAuthException error message: (#200) The user has not Authorized the application to perform this action

4

2 に答える 2

0

ここの文書に記載されているように:

/GROUP_ID/feedユーザーは、publish_actionsアクセス許可と次のパラメーターを使用して HTTP POST 要求を発行することにより、グループのウォールにリンクを投稿できます。(これpublish_streamも機能しますが、使用する必要がありますpublish_actions。)これには user が必要access_tokenです。

したがって、投稿するだけで何をする必要がありますか (ユーザーとしてスクリプトを実行します):

  1. publish_actions許可
  2. ユーザーaccess_token

これを cronjob として使用するために、通常は次のようにします。

  1. ユーザー (このグループに公開する権限を持つユーザー) に必要な権限を付与します
  2. 彼のトークンを拡張する
  3. このトークンをDBに保存します
  4. トークンを使用して公開する
  5. 有効期限変数に注意してください。たとえば、トークンの有効期限が 3 日前になる前に --> ユーザーにメールを送信してアプリに再度「ログイン」し、#3に進みます。
  6. 投稿中に常にエラーをキャッチしてログに記録します。エラーがアクセストークンに関するものかどうかを確認できるため、#5に進みます
于 2013-01-20T17:10:21.450 に答える
0

試す:

$config = array(
    'appId' => 'xxx',
    'secret' => 'xxx',
    'cookie' => true
);

Cookie を設定すると、ログイン状態が維持されます。

于 2013-01-20T16:08:29.413 に答える