2012-07-03 26 views
6

Tôi có một trang web có thư viện ảnh và tôi muốn tải lên từng ảnh (từng người một) vào facebook của tôi trang (không phải tường). Tôi quản lý để gửi một tin nhắn nhưng bây giờ tôi muốn tải lên một bức ảnh vào một bức tường trang FB bằng cách tải lên một hình ảnh hiện có từ URL máy chủ cụ thể (tôi không muốn tải lên một lần nữa tại địa phương). Điều này có thể không?Ảnh tải lên Facebook API từ URL

+0

https://developers.facebook.com/docs/reference/api/page/#photos – CBroe

Trả lời

12

Có bạn có thể làm điều đó
Ví dụ Trong Graph Api Explorer
Làm cho bài cuộc gọi, thiết lập url để https://graph.facebook.com/me/photos,
Thêm lĩnh vực với trọng message và giá trị "bất kỳ thông báo tùy chỉnh"
Thêm lĩnh vực khác với phím url và giá trị https://appharbor.com/assets/images/stackoverflow-logo.png
nhấp gửi

+1

Hầu :) Hình ảnh được tải lên nhưng để cá nhân của tôi Tường. Làm thế nào tôi có thể tải lên một bức tường trên trang facebook của tôi (ilija.veselica.photography)? Cảm ơn –

+0

Tôi gặp lỗi: "message": "(# 120) Id album không hợp lệ –

+0

Đây là câu trả lời đúng. Ảnh được tải lên tường cá nhân của bạn vì/me/photos in url endPoint. Nếu bạn muốn page, replace/me/with/pageId/ – Eduard

1

Bạn cần biết id album và ma ke gọi POST tới:

https://graph.facebook.com/albumid/photos?access_token=$access_token 

Bạn sẽ tìm thấy id album được nhập vào album và xem URL. Sẽ giống như https://www.facebook.com/media/set/?set=a.XXXXXXXXXXX.YYYY.ZZZZZZZZZZ&type=3

Id album của bạn là XXXX.

+0

Đây là album: http://www.facebook.com/media/set/?set=a.254503314567659.69923. 194544520563539 & type = 3 Vì vậy, id album là 254503314567659. Điều này có nghĩa là tôi đang gọi https://graph.facebook.com/254503314567659/photos? Tôi đã tiếp tục access_token, thông báo và url params và vẫn lỗi tương tự –

+0

chúng ta có thể xem mã của bạn? – Martinson

+0

Tôi nghĩ rằng bạn nên thử làm điều đó ở đây trước tiên: https://developers.facebook.com/tools/explorer?method=GET&path=254503314567659%2Fphotos –

1

đây là những gì tôi sử dụng:

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID, 
    'secret' => FACEBOOK_SECRET, 
    'cookie' => true, 
    'fileUpload' => true, 
)); 

$user = $facebook->getUser(); // Get the UID of the connected user, or 0 if the Facebook user is not connected. 

$facebook->setFileUploadSupport(true); 

if($user == 0) { 
    // If the user is not connected to your application, redirect the user to authentication page 
    /** 
    * Get a Login URL for use with redirects. By default, full page redirect is 
    * assumed. If you are using the generated URL with a window.open() call in 
    * JavaScript, you can pass in display=popup as part of the $params. 
    * 
    * The parameters: 
    * - redirect_uri: the url to go to after a successful login 
    * - scope: comma separated list of requested extended perms 
    */ 

    $login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI,'scope' => PERMISSIONS_REQUIRED)); 

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

} else { 
    // if the user is already connected, then fetch access_token and user's information or show some content to logged in user. 
    try 
    { 
     $access_token = $facebook->getAccessToken(); // Gives you current user's access_token 

     $user = $facebook->api('/me'); // Gets User's information based on permissions the user has granted to your application. 

    } catch(FacebookApiException $e){ 
     $results = $e->getResult(); 
     // Print results if you want to debug. 
    } 

} 

$img = './upload/'.$image_path; 
    $args = array(
     'message' => 'Some Message', 
     'access_token'=>urlencode($access_token), 
    ); 
    $args[basename($img)] = '@'.realpath($img); 

    $ch = curl_init(); 
    $url = 'https://graph.facebook.com/me/photos'; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    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); 
    $response = json_decode($data,true); 
+0

Vì bạn đang đăng mã phía máy chủ ở đây, tôi giả định "chúng" thực sự là "Tôi". Trong trường hợp đó, hoàn toàn không phù hợp để thực sự liên kết đến trang web của bạn theo cách này, bởi vì nó không liên quan đến từ xa để trả lời câu hỏi này. Nhưng thay vì gắn cờ này là spam, tôi sẽ chỉnh sửa câu trả lời này để phù hợp. –

0
  $config = array('appId' => $config['App_ID'],'secret' => $config['App_Secret']); 

      $facebook = new Facebook($config); 

      // sets our access token as the access token when we call 
      // something using the SDK, which we are going to do now. 
      $facebook->setAccessToken($access_token); 

      $page_id = "XXXXXXXXXXXXXXX"; 

      $page_access_token = ""; 

      $result = $facebook->api("/me/accounts"); 

      foreach($result["data"] as $page) { 
       if($page["id"] == $page_id) { 
        $page_access_token = $page["access_token"]; 
        break; 
       } 
      } 

      $facebook->setFileUploadSupport(true); 
      $photo = "http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"; 
      $args = array(
       'access_token' => $page_access_token, 
       'message'  => "message here", 
       'url' => $photo, 
      ); 
      $post = $facebook->api("/$page_id/photos","post",$args);