私がしたいこと:
Facebook にログインしているかどうかに関係なく、新しいコンテンツが Web サイトに追加されるたびに Facebook ページに投稿を公開します。
現在動作するもの:
自分のウォールに投稿を公開します。
これを達成するために私がしたこと:
- アプリを作成しました
http://www.facebook.com/login.php?api_key=[my appId] &next=http://www.facebook.com/connect/login_success.html&req_perms=read_stream に従って必要な権限をアプリに付与しました。 publish_stream,manage_pages,publish_actions次に、コンテンツを投稿するスクリプトを作成しました。基本的には次のとおりです。
$appId='12822*****98'); $secret='17c*****************320f'); // on récupére l'instance de classe Facebook $facebook=new Facebook(array( 'appId' => $appId, 'secret' => $secret )); // acquisition du token $url='https://graph.facebook.com/oauth/access_token?'. 'client_id='.$appId. '&client_secret='.$secret. '&grant_type=client_credentials'. '&scope=read_stream,publish_stream,publish_actions,manage_pages,offline_access'. '&state=dfgdfgdtgdgfdfg'; $reponse = file_get_contents($url); $tabReponse=explode('=',$reponse); $accessToken=$tabReponse[1]; $facebook->setAccessToken($accessToken); $params = array( 'message' => 'the message', 'link' => 'http://www.myAppUrl.com'), 'name' => 'the name', 'description' => 'some description', ); try { // la cible $targetID='1471*********81'; // publication $publishStream = $facebook->api("/$targetID/feed/", 'POST', $params); } catch (FacebookApiException $e) { $result = $e->getResult(); print("Attention, la publication FB a échoué, veuillez vérifier les paramètres!"); }
最初のステップで配信されたアクセス トークンを印刷すると、(27 文字) のようなものが得られます。これは、この古い投稿{appId}|***************************
で読んだものですが、一部の操作では有効なトークンですが、すべてではありません。
これにより、個人のウォールに公開できますが、管理しているページには公開できません。この最後のケースでは、(このアクションを実行するアプリを承認していないユーザーについて) を取得します。#200 error
Graph API Explorer を使用してアプリのアクセス トークンを生成すると、アクセス トークンを表す長い文字列が取得されます。これをsetAccessToken
呼び出しで使用すると、ページ上で完全に公開できます。#100 error
(アプリ設定で「ストリーム投稿URLセキュリティ」をオフにしてもCanvas URLを参照しなければいけないリンクについて)
誰かが私が望むものを達成する方法を知っていますか?
ユーザー接続は必要ありません。ユーザーではなく、アプリを介して投稿する資格情報を要求する必要があるのはサーバーです。