私は数日間、クライアントの Web サイトからクライアントの Facebook ページ ウォールに正常に投稿しようと試みてきました。ユーザーがログインせずにこれを実行できるようにする必要があります。これは、ドキュメントで提供されている URL にアクセスして生成された拡張アクセス トークンで実現できました。
私がやろうとしているのは、この質問のように PHP SDK を使用して拡張トークンをフェッチすることです - Facebook PHP SDK: gets "long-lived" access token now that "offline_access" is deprecated ですが、次のエラーが表示されます:
(#200) The user hasn't authorized the application to perform this action
Graph API エクスプローラーによって生成された認証トークンのデバッグは、ユーザーとして自分自身を示し、必要なスコープを含みmanage_pages
ますstatus_update
。ただし、を実行するme/accounts
と、perms
配列は問題のページのデータの下にこれらをリストしません。これが関連しているかどうかはわかりません。
使用しようとしたコードは次のとおりです。
$facebook = new Facebook(array('appId' => 'xxxxxxx', 'secret' => 'xxxxxx'));
$pageID = 'xxxxxxxx';
$facebook->setExtendedAccessToken();
$accessToken = $facebook->getAccessToken();
try {
$page_info = $facebook->api("/$pageID?fields=access_token");
print_r ($page_info);
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
if( !empty($accessToken) ) {
$args = array(
'access_token' => $accessToken,
'message' => "Catch phrase!"
);
$facebook->api("/$pageID/feed","post",$args);
} else {
// Handle error
}
更新結果
の出力をエコーした場合getAccessToken()
、アプリIDとシークレットがで区切られていることがわかりました|
-これは私が受け取るべきものですか? 私が見た他のすべてのトークンはランダムで、はるかに長いので、私には奇妙に思えます。
これまでのところ、私はこれに多くの時間を無駄にしてきました。それは他の誰にとってもうまくいくようです。
更新 2
こんにちはウォーレン! あなたはこれらの部分に慣れていないようです。ようこそ! これについて調査していただきありがとうございます。これらのトークンを DB テーブルに保存し、投稿するたびに有効期限が切れているかどうかを確認する必要がありますか? 私はページとしてページに投稿するだけです。明らかに、これにaccess_token
は USER であると想定しているものではなく、ページが必要ですaccess_token
。また、Graph API Explorer ページを更新するか、新しいユーザー トークンを要求すると変更されますが、ページ アクセス トークンは期限切れにならないこともどこかで読んだと思います。access_token
非常に不可解です..このアプリで新しいトークンを取得する必要があるのか 、それとも機能しているように見えるページを使用するだけなのかわかりませんか?