web-dev-qa-db-ja.com

PHPを介してFacebookファンページに投稿する簡単な例ですか?

私は多くの検索を行いましたが、機能しない古いチュートリアルが見つかりました...

PHPで作成したサイトがあり、管理領域で特定のフォームを送信するときに、Facebookの「ファンページ」に公開したい

RSSが利用できないので、php SDKを使用してFacebookユーザーページ(ユーザーウォールではない)に直接投稿する例はありますか?

ありがとうございました!

43
nmarti

最後に、多くのテストの後、PHP SDKなしで機能しました。これはステップバイステップガイドです。

1。アクセス許可とページトークンを取得する

https://developers.facebook.com/tools/Explorer/ に移動し、左側の最初のドロップダウンメニューからアプリを選択します。

[アクセストークンの取得]ボタンをクリックし、[アクセス許可の選択]ウィンドウで[拡張アクセス許可]をクリックしてmanage_pagesとpublish_streamを確認し、[アクセストークンの取得]青いボタンをクリックします。

このステップでは、Facebookアカウントへのアクセス許可をアプリに許可するよう求められる場合があります。

次に、「GET」ドロップダウンの横にあるテキストフィールドの最後をクリックして、me/accountsの数字を置き換え、このテキストフィールドの横にある青いボタンをクリックします。

アプリページを含むすべてのページのトークンを取得します。リストでページ名を見つけます。次のようになります: "name": "Your page name"

ページを見つけたら、ページのアクセストークンをコピーします(非常に長くなります)。次のようになります: "access_token": "XXXXXXXX"。ページのidもコピーします: "id": "XXXXX"

このステップはこれですべてです。コーディングを開始できます。

2。 PHPを介してページウォールに投稿する

まず、このスクリプトには、curlをサポートするサーバーが必要です。

最初のステップで取得したページアクセストークンとページIDを定義するPHPドキュメントを開始します。

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

その後、ページウォールに投稿する情報を含む配列を作成します。

$data['picture'] = "http://www.example.com/image.jpg";
$data['link'] = "http://www.example.com/";
$data['message'] = "Your message";
$data['caption'] = "Caption";
$data['description'] = "Description";

もちろん、 https://developers.facebook.com/docs/reference/api/post/ で説明されている他の投稿パラメーターを使用できます。1つ以上のパラメーターが必要ない場合上記の場合、単純に削除できます。

わかりました。この時点で、配列にアクセストークンを追加します。

$data['access_token'] = $page_access_token;

そして、投稿URLを設定して、ページに投稿します。

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

最後のステップでは、カールを使用してメッセージをページウォールに投稿します。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

その後、PHPドキュメントを保存し、それを実行しようとします。Facebookページに投稿が表示される場合があります。

このコードが同じ問題を抱えている他の人々に役立つことを願っています!

84
nmarti

Facebook Access Token Debugger を使用してトークンをテストできます

API v.2.5の実用的なソリューション

  1. app_idのパラメーターとしてresponse_uricodeを取得します

https://www.facebook.com/dialog/oauth?client_id=".$app_id."&redirect_uri=".$response_uri."&response_type=code&scope=manage_pages,publish_pages

  1. access_tokenの結果としてcodeapp_id、およびapp_secretに基づいてresponse_uriを取得します

https://graph.facebook.com/oauth/access_token?grant_type=authorization_code&client_id=".$app_id."&client_secret=".$app_secret."&code=".$code."&redirect_uri=".$response_uri

  1. page_access_tokenに基づいてpage_idaccess_tokenが期限切れになることはありません

https://graph.facebook.com/v2.5/".$page_id."?fields=access_token&access_token=".$access_token

4
bq23

Nmartiの回答への追加として。 API v.2.4で有効。

Facebook APIコンソールに行きたくない場合は、API呼び出しを行います。いくつかの手順があります。

まず第一に、投稿したいページの管理者であるFacebookユーザーが必要です。また、続行するにはFacebookアプリを作成する必要があります。

  1. ログインリクエストを行い、ユーザートークンを取得します。

https://www.facebook.com/dialog/oauth?client_id=%app-id%&redirect_uri=%your-site-url%&response_type=token&scope=manage_pages,publish_pages

応答として、%user-token%を取得して保存し、次のステップで必要になります。

続きを読む

  1. 長寿命トークンを要求する:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%app-id%&client_secret=%app-secret%&fb_exchange_token=%user-token%

これで、長寿命のページトークンを取得するために必要な%long-lived-token%が得られます。

続きを読む

  1. 次に、Facebookページのリストを取得し、

https://graph.facebook.com/v2.4/%page-admin-user-id%/accounts/?access_token=%long-lived-token%

リストであなたのページとページトークンを見つけ、nmartiの例を使ってページへの投稿を続けることができます。

Facebookも次のように言っています。

結果のページアクセストークンには有効期限がありません。

続きを読む

2
dikirill

これが探しているリソースです 。下にスクロールしてPage Loginそしてそこから読みます。ページのアクセストークンを取得し、投稿時にそのトークンを使用する必要があります。これは、投稿を「ページから」表示することを前提としています。 IE-ページのように投稿します。

postオブジェクトを作成するためのグラフAPIへの実際の呼び出しとその方法は、facebookドキュメントの this url にあります。

0
Lix