2

ユーザーの壁に写真を投稿する方法について質問がありますか?多くのチュートリアルを読みましたが、問題が発生しました。最後に私がしたことは、このチュートリアルに従いました:http: //www.masteringapi.com/tutorials/how-to-upload-a-photo-to-a-users-profile-using-facebook-graph-api/66/

私はpublish_streamの権限を設定しました。壁に写真を投稿していないだけで、エラーは発生しません。$fileの場所に何か問題があるかもしれません...わかりません。できれば助けてください。どうもありがとうございます。

4

1 に答える 1

3
  • SDKが正しくロードされていることを確認してください。
  • アプリにはphoto_uploadpublish_stream権限が必要です。
  • $file画像への相対パスである必要があります。例:/ path / to / image / file
  • 渡すPOSTパラメータは、そうimageではありません。source

したがって、最終バージョンは次のようになります(上記を修正した後)。

<?php
require_once('images/Facebook.php');

  $facebook = new Facebook(array(
    'appId'  => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
  ));

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

  if ($user) {
    try {

      # Photo Caption
      $photoCaption = 'My Photo Caption!';

      # Relative Path to your image.
      $file = 'plaukai/images/PlaukaiNeuzvedus.jpg';

      # Post Data for Photos API
      $post_data = array(
          'message' => $photoCaption,
          'source' => '@' . realpath( $file )
      );

      $apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

    } catch (FacebookApiException $e) {
      $user = null;
      error_log($e);
    }
  } else {
    $loginUrl = $facebook->getLoginUrl( array(
        'scope' => 'publish_stream,photo_upload'
    ));
    echo("<script>top.location.href = '" . $loginUrl . "';</script>");
  }
?>

注:setAccessToken / getAccessTokenは、他のコードで使用されていない限り必要ないため削除しましたがaccess_token、アプリがAPI呼び出しを行うと、SDKが現在のユーザーを自動的に渡すため必要ありません。

お役に立てば幸いです。ご不明な点がありましたらお知らせください。

PS上記のコードはテストしていませんが、他に問題がない限り機能する必要があります。

編集1:

次のいずれかの解決策も試してください。

解決策1:

  # Photo Caption
  $photoCaption = 'My Photo Caption!';

  # Relative Path to your image.
  $file = 'plaukai/images/PlaukaiNeuzvedus.jpg';

  # Post Data for Photos API
  $post_data = array(
      'message' => $photoCaption,
      'image' => '@' . realpath( $file )
  );

解決策2:解決策2:

  # Photo Caption
  $photoCaption = 'My Photo Caption!';

  # Absolute Path to your image.
  $imageUrl = 'http://placehold.it/500x500/'; // Example URL

  # Post Data for Photos API
  $post_data = array(
      'message' => $photoCaption,
      'url' => $imageUrl
  );

編集2:

リクエストしたコードは次のとおりです。

$redirectUri = 'http://domain.com/myapp/';

$loginUrl = $facebook->getLoginUrl( array(
    'scope' => 'publish_stream,photo_upload',
    'redirect_uri' => $redirectUri
));

echo("<script>top.location.href = '" . $loginUrl . "';</script>");
于 2013-01-24T15:36:58.163 に答える