1

このコードを使用して友達のフィードに投稿しようとしていますが、機能していません。私は立ち往生しています、何か助けはありますか?

 $app_url ="http://localhost.local/PMS/facebook/PostWithPHP.php";

 $facebook = new Facebook(array(
'appId'  => 'APPID',
'secret' => 'APPSECRET',
'cookie' => true,
));


  // Get User ID
$user = $facebook->getUser();

if ($user) {

$user_friends = $facebook->api('/me/friends');
sort($user_friends['data']);

try {
// Proceed knowing you have a logged in user who's authenticated.
$access_token = $facebook->getAccessToken();
$vars = array(
     'message' => 'My Message',
     'name' => 'title',
     'caption' => 'Caption',
     'link' => 'Link',
     'description' => 'Description',
     'picture' => 'image'
);

foreach($user_friends['data'] as $f){
        $sendTo = $f['id'];
        $sendToName = $f['name'];

        $result = $facebook->api("/".$sendTo ."/feed", 'post', $vars);
    }
    } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
   }
  }

 // Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=> $app_url));
  echo "<script type='text/javascript'>";
  echo     "top.location.href = '{$loginUrl}';";
  echo "</script>";
}

もう1つの質問は、このコードを使用することですが、$ facebook-> api("/"。$sendTo。"/ feed"、'post'、$ vars);を置き換えます。$ facebook-> api( "/ me / feed"、'post'、$ vars); そしてもちろん、友達をループさせることなく、私のタイムラインに投稿します。どうすれば壁​​に貼ることができますか?

4

4 に答える 4

0

タイムラインへの投稿には、コンテンツを公開するユーザーからの accessToken が必要になると思います。あなたの場合、彼の友人ではなく、登録ユーザーの accessToken を持っているだけです。それはFBによる制限だと思います。

于 2012-05-23T06:52:37.580 に答える
0

ここのチュートリアルに従うことができます: https://www.webniraj.com/2012/11/22/facebook-api-posting-a-status-update/

しかし、: への API 呼び出しを行う代わりに、友人のユーザー ID に/me/feed置き換えるmeので、次のようになります。/12345/feed

Facebook は現在、API を介したフレンズのウォールへの投稿を無効にしていることにご注意ください。代わりに、アクションでユーザーにタグを付けるか、Requests API を使用する必要があります。

于 2013-05-03T10:56:16.487 に答える
0

コードにはいくつか問題があります。まず、投稿の パラメータlinkpictureパラメータが有効な URL であることを確認します。そうしないと、Facebook からエラー メッセージが表示されます ( (#100) link URL is not properly formatted)。また、linkアプリケーションの Canvas または Site URL に移動する必要があります。

これにより、友人のウォールへの投稿に関する問題が解決されるはずです。

ただし、あなたのアプリケーションは Facebook プラットフォーム ポリシーに違反していることを思い出してください。Facebook では、ユーザーからの明示的な許可がない限り、ストリームへの複数の投稿 (自分の投稿か友達の投稿かを問わず) を許可していません。また、共通の友達が複数の友達から同じメッセージを見るのを防ぐこともできます。

于 2012-05-23T09:28:58.783 に答える
0

最初に、ユーザーIDを取得することを確認します(エコーを配置して確認します)これを試していない場合...これは兄弟に役立つと思います

 $token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . $app_id ."&client_secret=" . $app_secret .
   "&grant_type=client_credentials";

 $access_token = file_get_contents($token_url);

  $signed_request = $_REQUEST["signed_request"]; 
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
  $user_id = $data["user_id"];
于 2012-05-23T06:58:24.027 に答える