2012-07-03 5 views
6

J'ai un site Web avec galerie de photos et je voudrais télécharger chaque photo (un par un) à mon facebook page (pas de mur). J'ai réussi à poster un message, mais maintenant je veux télécharger une photo sur un mur de pages FB en téléchargeant une image existante à partir de l'URL spécifique au serveur (je ne veux pas télécharger de nouveau localement). Est-ce possible?Facebook API télécharger photo à partir de l'URL

+0

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

Répondre

12

Oui, vous pouvez le faire
Exemple Dans Graph Api Explorer
Faire le poste d'appel, définissez URL pour https://graph.facebook.com/me/photos,
Ajouter un champ à clé message et la valeur « tout message personnalisé »
Ajouter un autre champ avec la clé url et la valeur https://appharbor.com/assets/images/stackoverflow-logo.png
cliquez sur Envoyer

+1

Presque :) Les photos sont téléchargées mais à mon personnel mur. Comment puis-je télécharger sur un mur sur ma page facebook (ilija.veselica.photography)? Merci –

+0

Je reçois une erreur: "message": "(# 120) ID d'album invalide –

+0

Voici la bonne réponse: Les photos sont mises en ligne sur votre mur personnel à cause de/me/photos dans l'URL endPoint. page, remplacer/moi/avec/pageId/ – Eduard

1

Vous devez connaître l'identifiant et ma album ke appel POST à:

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

Vous trouverez l'identifiant de l'album entrant dans l'album et regardant l'URL. Sera quelque chose comme https://www.facebook.com/media/set/?set=a.XXXXXXXXXXX.YYYY.ZZZZZZZZZZ&type=3

L'identifiant de votre album est le XXXX.

+0

Ceci est l'album: http://www.facebook.com/media/set/?set=a.254503314567659.69923. 194544520563539 & type = 3 Donc, l'id de l'album est 254503314567659. Est-ce que cela signifie que j'appelle https://graph.facebook.com/254503314567659/photos? J'ai procédé access_token, message et url params et toujours la même erreur –

+0

pouvons-nous voir votre code? – Martinson

+0

Je pense qu'il est plus facile d'essayer de le faire ici d'abord: https://developers.facebook.com/tools/explorer?method=GET&path=254503314567659%2Fphotos –

1

ce que j'utilise:

$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

Puisque vous publiez du code côté serveur ici, je suppose que "ils" est en fait "je". Dans ce cas, il est totalement inapproprié de créer un lien vers votre site de cette manière, car il n'est pas lié à distance à la réponse à cette question. Mais plutôt que de signaler cela comme spam, je vais modifier cette réponse pour être approprié. –

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