2012-07-03 3 views
6

Mam stronę internetową z galerią zdjęć i chcę załadować każde zdjęcie (jedno po drugim) na mój facebook strona (nie na ścianie). Udało mi się opublikować wiadomość, ale teraz chcę przesłać zdjęcie do ściany strony FB, przesyłając istniejący obraz z serwera - konkretny adres URL (nie chcę ponownie przesyłać lokalnie). czy to możliwe?Facebook API załaduj zdjęcie z adresu URL

+0

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

Odpowiedz

12

Tak można zrobić to
Przykład W Graph Api Explorer
Bądź stanowisko rozmowę, ustawienie adresu URL do https://graph.facebook.com/me/photos,
Dodaj pole z kluczem message i wartości „każdy asn”
Dodaj kolejne pole z kluczem url i wartość https://appharbor.com/assets/images/stackoverflow-logo.png
kliknij Wyślij

+1

Prawie :) Zdjęcia są przesyłane ale mój osobisty Ściana. Jak mogę przesłać do ściany na mojej stronie na Facebooku (ilija.veselica.photography)? Dzięki –

+0

Pojawia się błąd: "message": "(# 120) Nieprawidłowy identyfikator albumu –

+0

To jest odpowiednia odpowiedź, zdjęcia są umieszczane na Twojej osobistej ścianie z powodu/me/photos w adresie końcowym endPoint. page, replace/me/with/pageId/ – Eduard

1

Musisz znać identyfikator album i ma ke POST pod numer:

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

Znajdziesz id albumu wchodzącego do albumu i patrząc na URL. Będzie to coś w rodzaju: https://www.facebook.com/media/set/?set=a.XXXXXXXXXXX.YYYY.ZZZZZZZZZZ&type=3

Twój identyfikator albumu to XXXX.

+0

To jest album: http://www.facebook.com/media/set/?set=a.254503314567659.69923. 194544520563539 & type = 3 Tak więc identyfikator albumu to 254503314567659. Czy to oznacza, że ​​dzwonię do https://graph.facebook.com/254503314567659/photos? Kontynuowałem działanie access_token, wiadomości i parametrów URL i wciąż ten sam błąd –

+0

możemy zobacz swój kod? – Martinson

+0

Myślę, że łatwiej jest najpierw spróbować zrobić to tutaj: https://developers.facebook.com/tools/explorer?method=GET&path=254503314567659%2Fphotos –

1

to co używam:

$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

Ponieważ publikujesz tutaj kod po stronie serwera, zakładam, że "oni" to właściwie "ja". W takim przypadku nie należy zamieszczać linków do witryny w ten sposób, ponieważ nie ma ona związku z udzieleniem odpowiedzi na to pytanie. Ale zamiast oznaczać to jako spam, zamierzam edytować tę odpowiedź, aby była odpowiednia. –

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);