0

投稿を公開すると Facebook ページに送信されるように WP サイトを設定しようとしています。残念ながら、これを機能させることはできません。以下のコードが含まれていますが、何もしていないようです (おそらく FB はエラーを送り返していますが、WP はそれを表示していません)。

投稿したいページ (下記) のフィードにアクセスしようとすると、正しい権限がないと言われます (下記)

https://graph.facebook.com/163797013684290/feed

/** The error I recieve when visiting the above page */
{
   "error": {
      "message": "An access token is required to request this resource.",
      "type": "OAuthException",
      "code": 104
   }
}

私はこれまでにこれらの設定を完了しました -

  1. Graph API エクスプローラーへのアクセス
  2. マイページに投稿したいアプリをドロップダウンメニューから選択します
  3. 「アクセストークンを取得」をクリック
  4. 「manage_pages」権限を選択しました
  5. 再サインインし、アプリがマイページにアクセスする許可を付与
  6. 生成されたアクセストークンを組み込んで、次のスクリプトを作成しました。

ここからどこへ行けばいいのかわからないので、誰か助けてください。ありがとう。


class Publish_To_Facebook{

    /**
     * The ID of the Page to edit
     *
     * @var string
     * @access private
     */
    private $page_id = '163797013684290';   

    /**
     * The Page access token given to the application set up to post to the Page
     *
     * @var string
     * @access private
     */
    private $page_access_token = 'my_access_token'; 

    /**
     * The back-end service for Page's wall
     *
     * @var string
     * @access private
     */
    private $post_url = '';

    /**
     * Constructor
     */
    public function __constructor(){

        $this->post_url = 'https://graph.facebook.com/'.$this->page_id.'/feed';

    }

    /**
     * Manages the POST message to post an update on a page wall
     * 
     * @param array $data
     * @return string the back-end response
     */
    public function message($data){

        /** Grab the $page_access_token */
        $data['access_token'] = $this->page_access_token;

        /** Initiate CURL */
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $this->post_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        /** Execute and close CURL */
        $return = curl_exec($ch);
        curl_close($ch);

        return $return;

    }
}

$to_post = array(
    'message'     => 'The status header', 
    'link'        => 'http://theurltopoint.to', 
    'picture'     => 'http://thepicturetoinclude.jpg',
    'name'        => 'Name of the picture, shown just above it', 
    'description' => 'Full description explaining whether the header or the picture'
);
$facebook = new Publish_To_Facebook();
$facebook->message($to_post);
4

5 に答える 5

2

次の行はあなたの$page_access_token...について言及していません

$this->post_url = 'https://graph.facebook.com/'.$this->page_id.'/feed';

次のようなものが必要です...

$this->post_url = 'https://graph.facebook.com/'.$this->page_id.'/feed?access_token='.$this->page_access_token;
于 2013-01-17T16:40:37.687 に答える
1

このページを見て解決したほうがいいと思います。プロセス全体を説明します。

ページとしてログイン

ページアクセストークンに関するドキュメントからの情報を次に示します。

ページ アクセス トークン

次の操作を現在のユーザーではなくページとして実行するには、Graph API オブジェクトの読み取りに一般的に使用されるユーザー アクセス トークンではなく、ページのアクセス トークンを使用する必要があります。このアクセス トークンは、HTTP GET を /USER_ID/accounts に manage_pages パーミッションで発行することによって取得できます。これにより、ユーザーが管理アクセス権を持つページ (アプリケーション プロファイル ページを含む) のリストと、それらのページの access_tokens が返されます。または、上記のように、manage_pages パーミッションを使用して HTTP GET を /PAGE_ID?fields=access_token に発行することにより、単一の特定のページのページ アクセス トークンを取得できます。特に明記されていない限り、ページへの公開には publish_stream パーミッションも必要です。

ソース

于 2013-01-17T16:50:00.553 に答える
0

別の方法として、twitterfeed.comを使用して、他のいくつかのオプションを使用して投稿をFacebookに自動的に送信することもできます。

于 2013-01-17T16:43:40.390 に答える
0

access_tokenGraph API エクスプローラーから得られる は永続的なものではありません。少なくとも 2 か月ごと、または Facebook からログアウトするたびに更新する必要があります。

これを自分でゼロからコーディングするのではなく、Facebook PHP SDK を使用してみませんか? アプリの ID とシークレットを使用して、ページに永続的にアクセスできます。

于 2013-01-17T18:18:43.427 に答える
0

個人的には、ditch curl を使用して PHP SDK を使用します。サイトに独自のアプリ シークレットなどを割り当て、それらをコードにリンクします。

さて、あなたが自問したい次のことは、Facebookの記事を複製したいですか、それともFacebookの記事にリンクしたいですか?

個人的には、リンク オプションを使用します。この場合、LINK ストリームに投稿します。

リンクとして投稿すると、適切なリンク投稿のように表示され、投稿のサムネイルと概要が表示されます。OG メタ タグを使用して、そこに表示される内容を微調整できます。

代わりに記事全体を直接フィードに投稿することもできますが、これで本当によろしいですか?

この答えは、理論が長く、コードが短いです。もう少し助けが必要な場合は、私が上で述べたことに基づいて、あなたが何を望んでいるのかを具体的にしてください.

于 2013-01-18T13:04:34.417 に答える