2011-03-02 14 views
1

新しいphp please forgive my silly questions。写真と壁にポストに壁紙をアップロードする

私は最初のfbアプリケーションを作成しています。ユーザーは、ローカルドライブをブラウズして写真を選択することができます。送信されると、次のページにリダイレクトされ、最初に自分のサーバーに保存してからユーザーの壁に投稿します。

アプリケーションがそれほど効果的ではありません。ユーザーのブラウズと写真をサーバーに保存している部分は機能していますが、サーバーから写真を取得してユーザーの壁に掲示することはできません。

のconfig.php:

<?php 
require_once 'facebook.php'; 

$app_id = ""; 
$app_key = ""; 
$app_secret = ""; 
$canvas_url = ""; 

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

$session = $facebook->getSession(); 

if (!$session) { 

     $url = $facebook->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 0, 
     'req_perms' => 'publish_stream, user_photos, read_stream, read_friendlists' 
     )); 

     echo "<script type='text/javascript'>top.location.href = '$url';</script>"; 

    }//end if session user 
else 
{ 

     try { 

     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 

     $updated = date("l, F j, Y", strtotime($me['updated_time'])); 

     echo "Hello " . $me['name'] . "<br />"; 
     echo "You last updated your profile on " . $updated . "<br />" ; 
     echo "<img src='https://graph.facebook.com/".$uid."/picture'/>"; 
     }//end try getUser 
     catch (FacebookApiException $e) { 

     echo "Error:" . print_r($e, true); 

     }//end catch getUser 
}//end else user 

index.phpのフォームが含まれています

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

は、プロセス

$target_path = "uploads/"; 
     $target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

     if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
      echo "The file ". basename($_FILES['uploadedfile']['name']). 
      " has been uploaded" . "<br />"; 
     } else{ 
      echo "There was an error uploading the file, please try again!" . "<br />"; 
     } 
     try { 
    $post_id = $facebook->api("/".$uid."/feed", "post", array("picture"=>$target_path)); 
    if(isset($post_id)) 
     echo "A new post to your wall has been posted with id: $post_id"; 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 

を実行uploader.php私はこれは多くの異なる方法を試してきました私はオンラインで見つけることができるが、それは動作しません。私は$ facebook-> setFileUploadSupport(true)を追加しようとしました。エラーを受け取ります。

写真をユーザーの壁にアップロードする方法についてアドバイスしてください。このコードは正確に私の作品

$target_folder = "uploads/"; 
$target_path = $target_folder . basename($_FILES['uploadedfile']['name']); 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded" . "<br />"; 

    $file_path = $target_folder . $_FILES['uploadedfile']['name']; 
    $arr = array(); 
    $arr["image"] = '@' . realpath($file_path); 
    try { 
     $post_id = $facebook->api("/".$uid."/feed", "post", $arr); 
     if(isset($post_id)) 
     echo "A new post to your wall has been posted with id: $post_id"; 
    } catch (FacebookApiException $e) { 
     error_log($e); 
    } 
} else{ 
    echo "There was an error uploading the file, please try again!" . "<br />"; 
} 
+0

は、あなたがこれをやらせる、すでにてFacebookませんか?言うように、それはあなたの罰金に動作しますか – Benubird

+0

私はどこに写真をアップロードすることができるアプリケーションを作成したいと思います。その後、写真は壁に掲示され、私のサーバーにも送られます。私はこれらの写真をつかみ、それらをコラージュとして表示します。 – meAtStackOverflow

答えて

1

、ありがとうございました。このコードを実行すると、あなたのアルバムやアプリケーションアルバムに投稿が投稿されます。

 
if(isset($_POST['upload'])) 
{ 
    if (isset($_FILES["file"]) && $_FILES["file"]["error"]==0) 
    { 
     $file='images/'.$_FILES["file"]['name']; 
     if(move_uploaded_file($_FILES["file"]["tmp_name"],$file)) 
     { 
      $facebook->setFileUploadSupport(true); 
      $post_data = array(
      'name'=>$_POST['album'], 
      'description'=>$_POST['album'] 
      ); 
      $data['album'] = $facebook->api("/me/albums", 'post', $post_data); 
      //$file = $file_name; 
      $post_data = array(
      "message" => $_POST['message'], 
      "source" => '@' . realpath($file) 
      ); 
      $album_id = $data['album']['id']; 
      $data['photo'] = $facebook->api("/$album_id/photos", 'post', $post_data); 
     } 
    } 
    /**/ 

} 

アプリケーションから写真をアップロードすると、Facebookはアプリケーションとして名前の付いたプロファイルにアルバムを作成します。しかし、このコードはあなたのアルバムに画像を投稿します。

$_POST['album']
は、テキストフィールドに入力するアルバム名です。その後、私はフォームを投稿して写真をアップロードします。私は、これは古いPHPのバージョンは getSession()機能を特定していないので、あなたが

+0

助けてくれてありがとう、私はあなたのメソッドを実装しようとしましたが、それでも動作しません。 – meAtStackOverflow

+0

助けてくれてありがとう! – meAtStackOverflow

+0

@meAtStackOverflow:あなたはようこそ!他のユーザーがあなたの経験から学ぶようにあなたの側から働いていなかったものを共有していますか? – ifaour

2

こんにちは仲間を: は、私は、これは動作するはず思いとても

+0

私は何かが自分の設定に間違っていると信じています。なぜ私がまだ働くことができないのか分かりません。しかし、本当に助けてくれてありがとう。 – meAtStackOverflow

0
$session = $facebook->getSession(); 
use getUser(); 
+1

答えをより有効にするためにいくつかの詳細を追加してください。 – akjoshi

1

getUser()getSession()を交換するのに役立ちます願っています。

0

このコードを使用し、ここではFacebookのドキュメントHow-To: Use the Graph API to Upload Photos to a user’s profile

<?php 

     $app_id = "YOUR_APP_ID"; 
     $app_secret = "YOUR_APP_SECRET"; 
     $post_login_url = "YOUR_POST-LOGIN_URL"; 
     $album_name = 'YOUR_ALBUM_NAME'; 
     $album_description = 'YOUR_ALBUM_DESCRIPTION'; 

     $code = $_REQUEST["code"]; 

     //Obtain the access_token with publish_stream permission 
     if(empty($code)) 
     { 
      $dialog_url= "http://www.facebook.com/dialog/oauth?" 
      . "client_id=" . $app_id 
      . "&redirect_uri=" . urlencode($post_login_url) 
      . "&scope=publish_stream"; 
      echo("<script>top.location.href='" . $dialog_url . 
      "'</script>"); 
     } 
     else { 
     $token_url= "https://graph.facebook.com/oauth/" 
     . "access_token?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=" . urlencode($post_login_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code; 
     $response = file_get_contents($token_url); 
     $params = null; 
     parse_str($response, $params); 
     $access_token = $params['access_token']; 

     // Create a new album 
     $graph_url = "https://graph.facebook.com/me/albums?" 
     . "access_token=". $access_token; 

     $postdata = http_build_query(
     array(
      'name' => $album_name, 
      'message' => $album_description 
      ) 
     ); 
     $opts = array('http' => 
     array(
      'method'=> 'POST', 
      'header'=> 
      'Content-type: application/x-www-form-urlencoded', 
      'content' => $postdata 
     ) 
     ); 
     $context = stream_context_create($opts); 
     $result = json_decode(file_get_contents($graph_url, false, 
      $context)); 

     // Get the new album ID 
     $album_id = $result->id; 

     //Show photo upload form and post to the Graph URL 
     $graph_url = "https://graph.facebook.com/". $album_id 
      . "/photos?access_token=" . $access_token; 
     echo '<html><body>'; 
     echo '<form enctype="multipart/form-data" action="' 
     .$graph_url. ' "method="POST">'; 
     echo 'Adding photo to album: ' . $album_name .'<br/><br/>'; 
     echo 'Please choose a photo: '; 
     echo '<input name="source" type="file"><br/><br/>'; 
     echo 'Say something about this photo: '; 
     echo '<input name="message" type="text" 
      value=""><br/><br/>'; 
     echo '<input type="submit" value="Upload" /><br/>'; 
     echo '</form>'; 
     echo '</body></html>'; 
     } 
?> 

例レスポンス

{ 
    "id": "1001207389476" 
} 
関連する問題