2010-06-11 32 views
5

Tôi cố gắng để tải lên một hình ảnh với một bộ sưu tập trên một trang fan hâm mộ facebook, đây là mã của tôi vậy, đến nay,tải lên một bức tranh to facebook

$ch = curl_init(); 

     $data = array('type' => 'client_cred', 'client_id' => 'app_id','client_secret'=>'secret_key',' redirect_uri'=>'http://apps.facebook.com/my-application/'); // your connect url here 

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token'); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

     $rs = curl_exec($ch); 
     curl_close($ch); 

     $ch = curl_init(); 
     $data = explode("=",$rs); 
     $token = $data[1]; 

     $album_id = '1234'; 
     $file= 'http://my.website.com/my-application/sketch.jpg'; 
     $data = array(basename($file) => "@".realpath($file), 
     //filename, where $row['file_location'] is a file hosted on my server 
      "caption" => "test", 
      "aid" => $album_id, //valid aid, as demonstrated above 
      "access_token" => $token 
     ); 

     $ch2 = curl_init(); 
     $url = "https://graph.facebook.com/".$album_id."/photos"; 
     curl_setopt($ch2, CURLOPT_URL, $url); 
     curl_setopt($ch2, CURLOPT_HEADER, false); 
     curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch2, CURLOPT_RETURNTRANSFER, false); 
     curl_setopt($ch2, CURLOPT_POST, true); 
     curl_setopt($ch2, CURLOPT_POSTFIELDS, $data); 
     $op = curl_exec($ch2); 

Khi tôi echo $ token, tôi dường như nhận được sự , nhưng khi tôi chạy tập lệnh, tôi nhận được lỗi này, {"error": {"type": "OAuthAccessTokenException", "message": "Mã thông báo truy cập được yêu cầu để yêu cầu tài nguyên này."}, tôi KHÔNG có ý tưởng tại sao nó lại làm điều này!

Về cơ bản những gì tôi đang làm trong mã đó là nhận mã thông báo truy cập với curl và sau đó, tải ảnh lên album của tôi cũng qua curl, nhưng tôi vẫn gặp lỗi đó!

Bất kỳ trợ giúp nào sẽ được đánh giá cao, cảm ơn bạn!

Trả lời

4

Ok, đã nhận nó làm việc, đây là mã, giả định rằng bạn có một phiên có giá trị đi.

$token = $session['access_token']; 

    //upload photo 
    $file= 'photo.jpg'; 
    $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); 

Thao tác này sẽ tạo một album nếu không có mặt, bạn có thể truy cập mã thông báo qua mảng phiên như minh họa ở trên. Hy vọng điều này sẽ giúp ai đó ra ngoài.

+0

Dude bạn đá ... nhờ sự giúp đỡ !!!! –

+0

Đó là một niềm vui, vui vì tôi có thể giúp đỡ! – Odyss3us

0

Có thể ứng dụng của bạn không có quyền cần thiết.

Để yêu cầu quyền qua OAuth, sử dụng đối số phạm vi trong yêu cầu uỷ quyền của bạn, và bao gồm một dấu phẩy tách ra danh sách tất cả các cấp phép mà bạn muốn yêu cầu.

http://developers.facebook.com/docs/authentication/permissions

+0

Tôi thực sự yêu cầu quyền publish_stream trong phiên của tôi, nhưng vẫn không có gì. – Odyss3us

+0

Bạn đăng hình ảnh lên album, bạn cũng không nên yêu cầu user_photos? – Zyava

+0

Điểm tốt, tôi sẽ thử điều đó! Tôi sẽ giữ các bạn đăng! Thanx cho các ý kiến ​​cho đến nay! – Odyss3us

Các vấn đề liên quan