2010-09-23 10 views
9

Ich versuche, ein Bild über meine Anwendung mit Facebook Graph API zu einem Album meiner Fan-Seite hochzuladen. Obwohl ich die AlbumID als Parameter zum Hochladen des Bildes zur Verfügung stelle, wird es in einem Album mit dem Namen APPLICATION_NAME Fotos in meinem eigenen Profil hochgeladen. Das Album der Fan-Seite bleibt leer. Ich habe auch versucht, die Seiten-ID meiner Fan-Seite anstatt der Album-ID zu senden, aber das Ergebnis ist das gleiche. Der Code, den ich für den Upload verwenden ist:Bild auf Facebook Fan-Seite hochladen mit API

$fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array(
     'access_token' => $session['access_token'], 
     'message'  => 'Caption', 
     'source'  => '@' . realpath('/path/to/image.jpg') 
    )); 

Bitte geben Sie mir Ideen, wie kann ich das Bild auf der Fan-Seite und nicht auf mein eigenes Profil Album hochladen.

Antwort

9

Ich weiß nicht, ob dies helfen würde, aber vielleicht müssen Sie manage_pages erweiterte Erlaubnis anfordern und dann zurückgegebene Seite access_token zum Posten von Bildern verwenden. Sie können kurz über diesen Prozess here lesen.

Dann können Sie diese Links mit Seitenzugriffstoken für die Buchung Fotos versuchen:

/me/photos 
/<page_id>/photos 
/<album_id>/photos 
+0

Vielen Dank für die Antwort. Von dem, was ich von deinem Link gelesen habe, erlaubt mir diese Erlaubnis, auf die Fan-Seite des Benutzers zuzugreifen. Was ich erreichen muss, ist den Inhalt auf eine einzige Fan-Seite hochzuladen, die von mir verwaltet wird. – o15a3d4l11s2

+0

Dank Bruder !!!! Du hast mein Leben gerettet :) Super post – Mohit

+0

@serg Bruder kannst du mir ein Beispiel geben. Wie kann ich einzelne oder mehrere Bilder auf der Facebook-Unternehmensseite posten? und sagen Sie mir auch, wie ich es schaffen kann Wenn der Kunde mehrere Facebook-Seiten hat? – Sid

12

Hier ist das Skript für Fotos auf Ihrer Facebook Fanpage hochladen:

<html> 
<head> 
<title>WebSpeaks.in | Upload images to Facebook</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<?php 
require_once 'library/facebook.php'; 
$facebook = new Facebook(array(
'appId' => $app_id,, 
'secret' => $app_secret, 
'fileUpload' => true 
)); 


//It can be found at https://developers.facebook.com/tools/access_token/ 
$access_token = '<Your access token>'; 

$params = array('access_token' => $access_token); 

//The id of the fanpage 
$fanpage = '330299184793'; 

//The id of the album 
$album_id ='10150418901414794'; 

//Replace arvind07 with your Facebook ID 
$accounts = $facebook->api('/arvind07/accounts', 'GET', $params); 

foreach($accounts['data'] as $account) { 
if($account['id'] == $fanpage || $account['name'] == $fanpage){ 
    $fanpage_token = $account['access_token']; 
} 
} 


$valid_files = array('image/jpeg', 'image/png', 'image/gif'); 

if(isset($_FILES) && !empty($_FILES)){ 
if(!in_array($_FILES['pic']['type'], $valid_files)){ 
    echo 'Only jpg, png and gif image types are supported!'; 
}else{ 
    #Upload photo here 
    $img = realpath($_FILES["pic"]["tmp_name"]); 

    $args = array(
    'message' => 'This photo was uploaded via WebSpeaks.in', 
    'image' => '@' . $img, 
    'aid' => $album_id, 
    'no_story' => 1, 
    'access_token' => $fanpage_token 
); 

    $photo = $facebook->api($album_id . '/photos', 'post', $args); 
    if(is_array($photo) && !empty($photo['id'])){ 
    echo '<p><a target="_blank" href="http://www.facebook.com/photo.php?fbid='.$photo['id'].'">Click here to watch this photo on Facebook.</a></p>'; 
    } 
} 
} 

?> 
<!-- Form for uploading the photo --> 
<div class="main"> 
    <p>Select a photo to upload on Facebook Fan Page</p> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"> 
    <p>Select the image: <input type="file" name="pic" /></p> 
    <p><input class="post_but" type="submit" value="Upload to my album" /></p> 
    </form> 
</div> 
</body> 
</html> 

Sie können complete tutorial here beobachten.

+1

Ich fürchte, dieses Codebeispiel funktioniert Arvind nicht wirklich.Während die "hochgeladene" Foto-ID zurückgegeben wird, wird beim Versuch, auf das Foto zuzugreifen, "Der Inhalt ist derzeit nicht verfügbar" angezeigt. – Dean

+0

Der access_token läuft nach zwei Stunden ab (https://developers.facebook.com/tools/access_token/) – billy

4

Meine beste Vermutung wäre eine von zwei possibilties sein:

  • , dass Ihre App nicht die Erlaubnis zu diesem Album hochladen muss. Wenn Sie/me/albums über das Seitenzugriffstoken anfordern, werden die mit dieser Seite verknüpften Alben aufgelistet. Dies ist ein can_upload-Feld für jedes Album, das entweder wahr oder falsch ist (spezifisch für das von Ihnen verwendete Zugriffstoken).

    oder

  • Sie verwenden einen Zugriffstoken mit Ihrem persönlichen Konto zugeordnet ist, und die Seite nicht das Album gehört. Hier sind einige Informationen darüber, wie eine Seite zu authentifizieren eher dann der Benutzer, der die Seite besitzt: http://developers.facebook.com/docs/authentication/pages/

+0

David, das ist eine der besten Einsichten, die ich zu diesem Thema finden konnte (was ich wie viele andere mit Problemen zu tun habe. .). Ich habe deine Schritte verfolgt, um nach dem Feld "can_upload" zu suchen, und es wird für alle Alben, einschließlich der "Wall Photos", als "falsch" angezeigt. Fans können Fotos über die übliche Foto/Video-Registerkarte an der Wand auf die Seitenwand hochladen. Alle diese Fotos werden auf die "Wall Photos" hochgeladen. Das Feld can_upload wird jedoch als 'false' angezeigt, und ich gehe davon aus, dass eine mehrteilige/Formular-Post-through-Grafik api (pageId/photos? Access_token = ...) nicht funktionieren wird. Wie erstelle ich ein Album mit can_upload = true? – user1055761

+0

Facebook sagt, dass nur Alben, die von deiner App erstellt wurden, can_upload = true haben, aber ich habe festgestellt, dass dies nicht auf der ganzen Linie zutrifft. Der einfachste Weg, um es zum Laufen zu bringen, ist, Ihr Foto ohne das Hilfsmittelfeld zu posten. Standardmäßig erstellt Facebook ein Album namens AppName's Photo's, wenn es nicht existiert, und fügt das Foto dort hinzu. Außerdem würde ich empfehlen, einfach "/ me" anzufordern, indem Sie das access_token verwenden, um sicherzustellen, dass Sie tatsächlich das Page-Token und nicht Ihr eigenes Benutzerzugriffstoken verwenden. – thefreeman

+0

Vielen Dank David. (Das alles erlaubt dir jedoch nicht, ein Foto auf einer Seite oder einer Benutzerwand als dein eigenes zu veröffentlichen. Wenn ich nicht missverstanden habe, sind die oben genannten Punkte in der Lage, ein Foto auf die Seite als 'Seite' hochzuladen, richtig?). – user1055761

1

Ich hatte das gleiche harte Problem, dass wenn ich versuche, ein Foto auf einer Seite zu teilen, ich gepostet es als ein Benutzer nicht als Seite. Und wenn ich versuche, es in einem Album zu veröffentlichen, das Foto in meinem Profil gepostet. Aber dank thefreeman löste ich das Problem Wie thefreeman sagte Sie müssen zuerst die Erlaubnis manage_pages nehmen dann Seite Zugriffstoken erhält, wie erwähnt here dann diesen Token Zugriffstoken finaly in Ihrer App oder Webseite statt Benutzer verwenden, um die Fotos auf der Seitenwand "me/fotos" zu posten oder in einem bestimmten Album in der Seite zu veröffentlichen, verwenden Sie "{album-id}/fotos"

Verwandte Themen