2011-04-02 27 views
1

私は運がなくてもどこでも検索し、セッション中に写真をFacebookにアップロードする例がたくさんあります(つまり、ユーザは物理的にコンピュータに座っていますウェブページにアクセスする)。私はサンプルを試して、彼らは動作します。オフラインで写真をウェブサーバから写真でアップロードする

私は私の現在のアプリは、ユーザーがオフラインアップデートを承認し、私はなどaccess_tokenは、USER_IDを保存し、私は正常に投稿することができます

Stackoverflow Question

同じ問題で、昨年からこの未回答の質問を気づきましたユーザーがオフラインになっているときの壁。

私は本当にユーザーの壁に写真を投稿する作業をするのに苦労しています。 Facebook documentationを読んで、私はmultipart/form-dataを使って写真をアップロードすることしかできないと思っています!

ユーザーが自分のコンピュータにいないと動作しません。サーバーのディレクトリに保存されている写真をアップロードできますか?

ここまでは私のコードです。これは、access_codeがすでに付与されていて、事前に保存されているので、facebookセッションを使用しないことを覚えておいてください。私が言及したように、ユーザーの壁に投稿することは、すでにこのアプローチで機能しています。

$filename= "@/myphotodir/filename.jpg"); 
$url = "https://graph.facebook.com/".$uid."/photos"; //$uid is fb user id 
$ch = curl_init($url); 
$attachment = array('access_token' => $access_token, 
       'app_id'   => $app_id, 
       'name'    => "A photo from me...", 
       'fileUpload'  => true, 
       'message'   => "my message", 
       'image'    => $filename, 
     ); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result= curl_exec($ch); 
curl_close ($ch); 

編集:$結果が偽に戻ってきます...忘れてしまったことを追加してください。

ご協力いただければ幸いです。 多くのありがとう、 ディーン

答えて

0

Facebook SDKを使用する必要があります。 Facebook SDKを使用すると、以下を使用できます。

$facebook->setFileUploadSupport(true); 
$parameters = array(
    'access_token' => 'ACCESS_TOKEN_HERE', 
    'message' => 'PHOTO_CAPTION', 
    'image' => '@' . realpath('/path_to_file.jpg') // Notice the @ sign 
); 
$facebook->api('/user_id/photos', 'post', $parameters); 

これは、デフォルトのアルバムに写真を掲載します。 user_idをalbum_idに置き換えると、特定のアルバムに投稿できます。

+0

私はこれを前に試してもうまくいかなかった。しかし、私が何かを見逃してしまった場合や、Facebook SDKがForm Post Dataを期待している場合(つまり、あなたのマシンに座ってフォームを介してファイルをアップロードすることを期待している)オフラインアップロードモードでは、フォーム投稿データはありません。 SDKからの正確なエラーメッセージは次のとおりです。 ----> "致命的なエラー:Uncaught CurlException:26:行629の/home/myforev3/public_html/library/facebook.phpに投げられたフォームポストデータの作成に失敗しました。" – Dean

+0

同じことをしたいです。 @Dean、あなたは解決策を見つけましたか?もしそうなら、私に知らせてください。前もって感謝します –