3

この質問は何百回も聞かれましたが、与えられた解決策はどれもうまくいきません。現在のユーザーが所有するすべてのページの壁に投稿しようとしています。したがって、まず、publish_actions、read_stream、manage_pages、offline_access のアクセス許可を取得します。次に、/me/permissions を介して、ユーザーが実際にそれらのアクセス許可を付与したことを確認します。

次に、ユーザーが管理者である場合、ユーザーのすべてのページを取得して、ページの壁に投稿しようとします。

$accounts = $facebook->api("/me/accounts", "GET", array("access_token"=>$facebook->getAccessToken()));

$data = $accounts["data"];

foreach ($data as $page)
{
    if (isset($page["perms"]) && in_array("CREATE_CONTENT", $page["perms"])))
    {
        $facebook->api("/".$page["id"]."/feed", "POST", array("link"=>$link, "access_token"=>$page["access_token"]));
    }
}

しかし、ページの壁への投稿は失敗し、よく知られているエラー メッセージが表示されます。

Uncaught OAuthException: (#200) ユーザーは、アプリケーションがこのアクションを実行することを承認していません

何か案は?私のせいはどこですか?

4

1 に答える 1

2

いずれかのページに対して Graph API Explorer または cURL を介して同じ呼び出しを行うことができれば、ロジックは正しいです。したがって、page/id呼び出しに try/catch を配置して、特定のページがループを台無しにしているかどうかを確認します。

try {
    $facebook->api("/".$page["id"]."/feed", "POST", array("link"=>$link, "access_token"=>$page["access_token"]));
  } catch (FacebookApiException $e) {
    error_log($e . " for: " .$page["id"] );
  }
}
于 2012-10-12T21:22:03.470 に答える