4 Stimmen

Facebook erstellt App für Seite zum Hochladen von Fotos in das Fotoalbum der Seite

Ich bin ein absoluter Neuling in der Entwicklung von Facebook-Apps, also haben Sie bitte etwas Geduld mit mir.

Ich wurde gebeten, eine Facebook-Seite mit einer Anwendung zu erstellen, mit der Benutzer Fotos in eines der Alben der Seite hochladen können.

Ich habe es geschafft, die Seite zu erstellen, nennen wir sie MyPage . Ich habe auch eine App erstellt MyApp und ich habe die App zum Profil der Seite hinzugefügt. Wenn Sie nun die MyPage Profil, auf der linken Seite (Registerkarten) finden Sie bereits MyApp .

MyApp verweist auf eine php-Seite in meinem Hosting-Account. Sie enthält ein Formular mit einem Dateifeld:

<form action="<?=$PHP_SELF;?>" enctype="multipart/form-data" method="post">
    <input name="MAX_FILE_SIZE" type="hidden" value="10000000" />
    <input id="fileSelect" name="fileSelect" type="file" />
    <input name="submit" type="submit" value="Upload" />
</form>

und den folgenden Code, um die hochgeladene Datei zu verarbeiten, die angeblich in MyPage Album:

if(count($_FILES)){
    $name = ereg_replace(' ', '_', basename($_FILES['fileSelect']['name'])); 
    $uploadFile = "uploads/" . $name; 
    if (move_uploaded_file($_FILES['fileSelect']['tmp_name'], $uploadFile)) { 
    $facebook->setFileUploadSupport(true);

    $args = array('message' => 'Photo Caption');
    $args['image'] = '@' . realpath($uploadFile);

    $data = $facebook->api('/THE_ALBUM_ID/photos', 'post', $args);

    //get rid of the original on the main server 
    unlink($uploadFile);
    }
}

Wenn ich jedoch die Schaltfläche "Hochladen" abschicke, erhalte ich folgende Fehlermeldung, direkt in MyPage Der iframe für MyApp :

Fatal error: Uncaught OAuthException: (#120) Invalid album id thrown in /COMPLETE_PATH/facebook-php-sdk/src/base_facebook.php on line 1033

Auch wenn die Album-ID korrekt ist und angezeigt wird, wenn ich den Graph API Explorer verwende, oder graph.facebook.com/THE_ALBUM_ID

Übrigens habe ich das oben auf das Skript gesetzt:

require 'facebook-php-sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'THE_APP_ID',
  'secret' => 'THE_APP_SECRET',
));

Was vermisse ich? Jede Hilfe wäre sehr willkommen.

2voto

urraka Punkte 987

Die einzige Möglichkeit, die ich gefunden habe, um Fotos über die Facebook-API auf eine Seite hochzuladen, ist, dies AS der Seite zu tun. Dazu müssen Sie sich zunächst als Seite authentifizieren. Um das zu tun, müssen Sie:

  1. Authentifizieren Sie sich mit dem Benutzer, der Eigentümer der Seite ist, mit der Option manage_pages Erlaubnis.

  2. Fordern Sie die Seiten mit

    /me/accounts?access_token=YOUR_ACCESS_TOKEN

  3. Finden Sie die access_token der entsprechenden Seite.

  4. Verwenden Sie das access_token um Fotos hochzuladen.

Wenn Sie BENUTZER benötigen, um Fotos auf die Seite hochzuladen, könnten Sie ein langlebiges Token mit dem Benutzer erhalten, dem die Seite gehört, und es speichern, um dieses Token anstelle der Benutzer-Token zum Hochladen von Fotos zu verwenden. Das hochgeladene Foto wird jedoch nicht als vom Benutzer hochgeladen angezeigt, sondern als von der Seite hochgeladen.

0voto

Dustin Nielson Punkte 1264

Sie könnten versuchen, CURL zu verwenden und die Graph-Api direkt anzusprechen, anstatt das SDK zu verwenden. Bei mir funktioniert das folgende. Ich habe eine Funktion, die ich in einer Variablen namens Bild übergeben, die ein Array von Token, Datei (vollständiger Pfad zur Datei) und die Album-ID ist und verwenden Sie dann den folgenden Code.

$args = array( 
   'access_token' => $image['token'], 
   'message' => 'Photo Caption', 
   'no_story' => 1
);
$args['image'] = '@' . $image['file'];
$target_url = "https://graph.facebook.com/".$image['album_id']."/photos";

$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL,$target_url);  
curl_setopt($ch, CURLOPT_POST, 1);      
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);     
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);    
curl_exec($ch); 
curl_close($ch);

Sie müssen sicherstellen, dass Sie über die manage_pages y el upload_photos Berechtigungen für das Token, das Sie dem Aufruf übergeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X