2011-01-31 23 views
1

私はFacebookのAPIに新たなんだ、と私は小さな問題があります。 ユーザーのアルバムに画像をアップロードしようとしています。このために私はスタックオーバーフローで、ここで見つけたPHPスクリプトを使用しています:Facebookの写真をアップロード

$app_id = xxx; 
$app_secret = "xxx"; 
$my_url = "http://apps.facebook.com/myapp/test.php"; 

$code = $_REQUEST["code"]; 

if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url); 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 


$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" 
    . $app_secret . "&code=" . $code; 

$access_token = file_get_contents($token_url); 

//upload photo 
$file= 'test.png'; 
$args = array(
    'message' => 'Photo from application', 
); 
$args[basename($file)] = '@' . realpath($file); 

print_r($args); 

$ch = curl_init(); 
$url = 'https://graph.facebook.com/2038278/photos?access_token='.$access_token; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$data = curl_exec($ch); 
//returns the photo id 
print_r(json_decode($data,true)); 

をしかし、結果は次のとおりです。

アレイ( アプリケーションから[メッセージ] =>写真[テスト.PNG] => @/[mypathで】/test.png)アレイ( アプリケーションを検証[エラー] =>アレイ([タイプ] => OAuthException [メッセージ] =>エラーが発生しました。))

これは何を意味するのでしょうか ?私は私のアプリケーションのための拡張アクセス許可を持っている必要がありますか? 私はそれが基本的にアクセスも与えたとuser_photos

はどうもありがとうございました!


2番目のスクリプト

APP_ID = "XXX" $; $ app_secret = "xxx"; $ my_url = "http://apps.facebook.com/myapp/test.php";

$code = $_REQUEST["code"]; 

if(empty($code)) { 
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=user_photos" ; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 


$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" 
    . $app_secret . "&code=" . $code; 

$access_token = file_get_contents($token_url); 









$token = $access_token; 

//upload photo 
$file= 'test.png'; 
$args = array(
'message' => 'Photo from application', 
); 
$args[basename($file)] = '@' . realpath($file); 

$ch = curl_init(); 
$url = 'https://graph.facebook.com/me/photos?access_token='.$token; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$data = curl_exec($ch); 

print_r(json_decode($data,true)); 
+0

こんにちは、あなたはユーザーの既存のアルバムに写真をアップロードしたいですか? –

+0

こんにちは!私が試したことはテストしているが、私の必要なのは、自分のアプリケーション用のアルバムを自動的に作成することだ。 – maephisto

+0

「アプリケーションの検証エラー」と言っている - あなたのFacebookアプリケーション自体に問題はないのだろうか?多分それは間違って設定されている、または最初の認証ステップのために右のキーをfacebookに渡していませんか? –

答えて

1

は、私はあなたがpublish_streamと呼ばれる許可を求めるために、あなたのアプリケーションが必要だと思います。そこphoto_uploadと呼ばれる別の権限もあるが、私は

+0

ありがとう!両方のパーミッションを試してみましたが、どちらも同じ例外はありません – maephisto

+1

Facebook Graph APIを使用して画像をアップロードする方法に関する他のチュートリアルを見たいと思うかもしれません:http://daipratt.co.uk/facebook-api -写真をアップする/ – Danilo

1

いつもあなたのアプリケーションからFacebookに写真をアップロードすると、Facebookは自動的にあなたのアプリケーションの名前のアルバムを作成します。あなたは何もする必要はありません。あなたのアプリケーションから任意の写真をアップロードし、あなたのプロフィールに行き、すべてのアルバムを見ると、あなたのアプリケーションの名前のアルバムが作成され、あなたのアップロードされた写真がその中に常駐していることがわかります。

+0

私はこれを知っています。私はすでにアルバムを自動的に作成する別のスクリプトを作成しています。しかし、それは同じ状況です - それは動作しません。私は質問に追加します、多分私は何か間違っているよ – maephisto

0

それが古いと考えられている(まだ動作して)理解し、私はあなただったら、私はそのように行かないだろう。 cURLメソッドは、私にとって少なくともあまりにも複雑なものであることが証明されています。

  1. ユーザーのuser_photospublish_stream(必要に応じて、しかし、将来の発展のために良いではない)を取得します:これらは、この正確な問題についての素晴らしい最近のブログ記事へのリンクを見ることができるの下に、注意しなければならない手順があります。
  2. アップロードする写真が含まれるユーザーのためにアルバムを作成します。
  3. 作成したばかりのアルバムのアルバムIDを取得します。
  4. 写真のパラメータを指定します。それと一緒に行くためのメッセージを、サーバー上のファイルの場所、そしてあなたがthis docs reference about publishing photos (bottom of page)で調べることができ、他の原料の束を。
  5. 指定されたパラメータで写真をアップロードします。

Dai Pratt's excellent tutorial on photo uploading via the New Graph API

重要:アルバムがすでに存在する場合、それは上記のケースでは、ユーザーに代わって複数の写真をアップロードしたい、チェックしませんスクリプトに重大な欠陥があります。作成したユーザーのIDとアルバムIDはデータベースに保存することが重要です。ユーザーがイメージをアップロードするたびに照会し、それに応じてアルバムを作成するかどうかを問うことができます。

EDIT:今、私が投稿した後、ここにコメントの正確なリンクが表示されます。とにかくこれが助けてくれることを祈っています:)

関連する問題