2012-01-22 16 views
1

可能性の重複:
Upload photo to users profile from photo URL, not input file field画像のURLが指定されている場合、その画像をFacebookのユーザーのアルバムにアップロードするにはどうすればよいですか?

私がaccess_tokenはを持っています。許可はpublish_streamです。

今、Facebookのデフォルトアプリのアルバムに画像をアップロードしたいと思います。イメージはS3.amazon.comでホストされています。 (ただし、このリンクはhttp://i.imgur.com/Ptyzk.jpg

私のアプリのアルバムにアップロードするにはどうすればいいですか? (Facebook上のドキュメントは奇妙で、私はPHPを理解していません)。

+1

現在の答えと問題点は何ですか? –

+0

誰かが回答をマージできますか? –

答えて

2

詳細は次の2つの方法を(実際には最初のあなたはもっと興味があります)があります。

オプション1:Uploading Photos to the Graph API via a URL

アマゾンS3または類似のサービスに自分のイメージをホストアプリケーション開発者は だけ自分のアプリケーションサーバにファイルをダウンロードすることなく、フェイスブックに直接S3のURLを渡すことができ

Facebookに再度アップロードしてください。これにより、パフォーマンスが向上し、開発者のコ​​ストが削減されます。

あなたは次のURLにPOST要求(または引数method=postGET)を発行する必要があり、この達成するためにエンコードされたフォームはhttp%3A%2F%2Fi.imgur.com%2FPtyzk.jpgされたURLに

https://graph.facebook.com/me/photos? 
     access_token=...&url=http%3A%2F%2Fi.imgur.com%2FPtyzk.jpg 

http://i.imgur.com/Ptyzk.jpgを(あなたが渡す場合にのみurlをエンコードする必要がありますそれはURL引数を持ち、ポストデータを渡す場合はエンコードしてはいけません)。

https://graph.facebook.com/USER_ID/photosに写真を掲載することにより、photo object documentationで述べたように:

写真はアプリの作成アルバムに公開されます。あなたのアプリのアルバムがまだ存在しない場合は自動的にアルバムを作成します。この方法でアップロードされたすべての写真は、この同じアルバムに追加されます。

オプション2:アップロード画像データ

あなただけ(Create Photos section of user object documentationを参照)http://graph.facebook.com/me/photosPOST要求を発行する必要があります。

唯一の必須のパラメータは

(技術に応じて、あなたがこの機能を実装するために使用します) multipart/form-dataエンコードされたファイルは、あなたがいずれかの一時ファイルにダウンロードし、後でそれをアップロード、またはグラフAPIにそれをストリーミングすることができますです sourceです

サンプルのカップルが(PHP以外の言語で)写真をアップロードする方法があります:

更新: あなたは写真が公開されることはしたくない場所それは(titleと質問のbodyはこれに反対している)ユーザーのアルバムやアプリケーションのアルバムは本当に明確ではありません。ユーザーのアルバムに公開する場合は、meidの写真をアップロードするアルバムに置き換える必要があります。それ以外の場合はme(現在のユーザー)または他のユーザーid(これはapplication access_tokenの使用が必要です)を使用してください。

+0

これは注目です!オプション1は私が探していたものです。あなたは完璧な答えを書きました、ありがとう!私はあなたに恩恵を与えることができればいいと思うが、質問は終了した。どのように私はあなたに恩恵を与えるのですか?あなたがこれを再開すると、私はあなたに賞金 – TIMEX

+0

@TIMEXを与えることができます。もしこの質問が再開されたり、答えが他の質問と合併すれば[手動で行うことができます](http://meta.stackexchange.com/questions/あなたが望むならば、69592 /それ以外にも報酬と例外的な報酬を与えることができます;) –

1

このチュートリアルでは、まさにその:

https://developers.facebook.com/blog/post/498/

あなたがに写真をアップロードしたいアルバムを選択することができます。

より一般的な方法でやりたい場合は、sourcemessageのパラメータを持つALBUM_ID/photosにPOSTリクエストを発行するように指示します。 sourceはマルチパート/フォームデータ型でなければならないことに注意してください。 「アプリケーションのアルバム」に写真をアップロードするにはhttps://developers.facebook.com/docs/reference/api/album/

+0

POSTパラメータは何ですか?私がPOStの要求を送るとき、私は "ファイルをアップロードする必要がある"ので、 – TIMEX

+0

ちなみにチュートリアルは

をFacebookのURLにACTIONで示しています。それは私が望むものではありません。私は私のバックエンドを使ってFacebookにアップロードしたい – TIMEX

+0

もっと一般的で、ドキュメントにリンクされた回答が更新されました –

0

あなたのアプリのユーザーにその写真をアップロードしたい場合は、この回答の大半が正しいと思います。しかし、あなたが理解しているように、あなたはあなたのアプリの接続されたアルバムにアップロードしたいと思っています。あなたはあなたが好きそれに画像を投稿することができますよりも、アプリのアルバムのIDを取得する必要があることを実行します。

$facebook->api('album_id', 'POST', array(...

をアルバムのidがGraph API explorerに行くとにGETを行う取得するには:/your_app_id/albums(実際のアプリIDでyour_app_idを置き換えます)。それはあなたのアプリアルバムに関するすべての詳細を与えるはずです。上記のアドレスへの画像ソースとタイトル(これは必須です)を含む配列を使用して、希望のSDK(JS、PHPなど)を使用してGraph API POSTリクエストを実行します。

NOTICE:アルバム・アプリケーション接続が廃止されており、3月1日に削除されます、2012年続きを読むこのドキュメントの最後にhttp://developers.facebook.com/docs/reference/api/application/

+0

実際に '/ me/photos'に画像を投稿すると、アプリケーションアルバム(アルバムがまだ存在しない場合に作成) –

+0

@juicy本当にあなたが間違っていると思うので、これを示すリンクを教えてもらえますか?/ me/photosは、現在ログインしているユーザーのパスです。私は参照を与えることができます:[リンク](http://developers.facebook.com/docs/reference/api/)これを読んで: "さらに、私は現在のユーザーを参照する特別な識別子がありますので、URL https ://graph.facebook.com/meは、アクティブなユーザーのプロフィールを返します。 –

+0

voila、['photo'オブジェクトのドキュメント](http://developers.facebook.com/docs/reference/api/photo/) –

関連する問題