まず第一にありがとう!このコミュニティ編集 FB アプリのおかげで、私にとっても何かが可能になりました。第二に、私の下手な英語で申し訳ありません。
ここに私の問題があります: ユーザーのウォールにメッセージを公開したいのですが、それは彼らが望む場合に限られます。そこで、コンテンツをウォールに公開するかどうかをユーザーが選択できるフォームを設定しました。問題は、ユーザーがフォームを送信すると、次のエラー メッセージが表示されることです: OAuthException: (#200) ユーザーはアプリケーションがこのアクションを実行することを承認していません。したがって、アクセストークンと関係があると確信していますが、何が問題なのかわかりません。これが私のコードです:
<?php
require_once "fb_app/facebook.php";
$facebook = new Facebook(array(
'appId' => '***',
'secret' => '***',
'cookie' => true
));
function grokSignedRequest() {
if (isset($_REQUEST['signed_request'])) {
$encoded_sig = null;
$payload = null;
list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
$sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
$data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
return $data;
}
return false; }
$userID = $facebook->getUser();
$sr_dati = grokSignedRequest();
$firendsWall=$_POST['firendsWall'];
$likeStatus=$_POST['likeStatus'];
if ($sr_dati->page->liked==1 or $likeStatus==1) {
if ($userID) { // Checks if there is already a logged in user
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
// Will throw the very first time as the token is not valid
error_log($e);
$userID = null;
}
}
if(empty($userID)) {
# There's no active session, let's generate one
$login_url = $facebook->getLoginUrl(array(
"response_type"=>"token", //Can also be "code" if you need to
"scope" => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos,photo_upload,user_status' ,
"redirect_uri"=> "http://www.facebook.com/pages/V....." //Your app callback url
));
echo "<script type='text/javascript'>top.location.href = '" . $login_url. "';</script>";
exit;
}
//pubblico contenuto sulla bacheca di un utente
if ($firendsWall==1){
try {$args = array(
'message' => 'Hello',
'link' => 'aaaa',
'caption' => 'vvvvvv!'
);
$post_id = $facebook->api("/".$userID."/feed", "post", $args);}
catch (FacebookApiException $f) {
// Will throw the very first time as the token is not valid
echo $f;} }}
?>