2012-07-03 43 views
6

Tengo un sitio web con galería de fotos y me gustaría cargar cada foto (una por una) a mi facebook página (no en la pared). Logré publicar un mensaje, pero ahora quiero subir una foto a FB Page Wall cargando una imagen existente de la URL específica del servidor (no deseo volver a cargarla localmente). es posible?Facebook API cargar foto desde la URL

+0

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

Respuesta

12

sí se puede hacerlo
Ejemplo En Graph Api Explorer
Haga el poste llamada, establecer url para https://graph.facebook.com/me/photos,
Agregar campo con llave message y el valor "cualquier mensaje personalizado"
agregar otro campo con llave url y el valor https://appharbor.com/assets/images/stackoverflow-logo.png
pulse ver

+1

Casi :) fotos se suben pero para mi personal pared. ¿Cómo puedo subir a un muro en mi página de Facebook (ilija.veselica.photography)? Gracias –

+0

Aparece un error: "mensaje": "(# 120) ID de álbum no válido –

+0

Esta es la respuesta correcta. Las fotos se cargan en su muro personal debido a/me/fotos en la url de endPoint. Si desea un mensaje específico página, replace/me/with/pageId/ – Eduard

1

Es necesario conocer el álbum Identificación y ma ke call POST para:

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

Encontrará la ID del álbum que entra en el álbum y observa la URL. Será algo así como https://www.facebook.com/media/set/?set=a.XXXXXXXXXXX.YYYY.ZZZZZZZZZZ&type=3

La ID del álbum es XXXX.

+0

Este es el álbum: http://www.facebook.com/media/set/?set=a.254503314567659.69923. 194544520563539 & type = 3 Entonces, la ID del álbum es 254503314567659. ¿Esto significa que estoy llamando a https://graph.facebook.com/254503314567659/photos? Procedí a access_token, a los parámetros de url y de mensaje, y aun así al mismo error –

+0

podemos ¿Ve su código? – Martinson

+0

Creo que es más fácil tratar de hacerlo aquí primero: https://developers.facebook.com/tools/explorer?method=GET&path=254503314567659%2Fphotos –

1

esto es lo que yo uso:

$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

Dado que está publicando aquí el código del lado del servidor, supongo que "they" es en realidad "I". En ese caso, es totalmente inapropiado vincularse realmente a su sitio de esta manera, ya que no está remotamente relacionado con la respuesta a esta pregunta. Pero en lugar de marcar esto como spam, voy a editar esta respuesta para que sea apropiada. –

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