Bild hochladen mit facebook API
Frage: Wie kann man ein Bild hochladen von meinem webserver auf facebook via FB API?
Ich Schreibe eine Anwendung, die ruft Bilder aus der user-Foto-album, macht einige änderungen (z.B. das hinzufügen von Wasserzeichen), dann schicken Sie es zurück zu Foto-album.
Den code, den ich verwenden, um das Foto hochzuladen, ist wie folgt
<?php
include_once("api/facebook.php");
include_once("config.php");
include_once("utils.php");
include_once("bemyfans.php");
$facebook=new Facebook($api_key,$app_secret);
$facebook->require_frame();
$user=$facebook->require_login();
echo "<p>Hello <fb:name useyou='false' uid=\"$user\"/></p>";
$args = array(
'api_key' => $api_key,
'call_id'=>microtime(true),
'v'=>'1.0',
'format' => 'JSON'
);
$args['Lenna.png']="@/home/thoai/htdocs/apps/bemyfans/Lenna.png";
signRequest($args,$secret);
$ch = curl_init();
$url = 'http://api.facebook.com/restserver.php?method=photos.upload';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
if ($data = curl_exec($ch)) echo "done";
echo $data;
function signRequest(&$args, $secret){
ksort($args);
$sig = '';
foreach($args as $k => $v){
$sig .= $k . '=' . $v;
}
$sig .= $secret;
$args['sig'] = md5($sig);
}
?>
Es funktioniert einfach nicht. Genauer gesagt, bekomme ich immer eine "Falsche Signatur" angezeigt.
Was ist falsch an dem code???
Was ist der
Ja, was ist das?
Die cURL sendet den Inhalt der Datei und nicht der Dateiname.
Ah, gut, das ist, warum. Siehe meine aktualisierte Antwort.
@
für $args['Lenna.png']="@/home/thoai/htdocs/apps/bemyfans/Lenna.png";
?Ja, was ist das?
Die cURL sendet den Inhalt der Datei und nicht der Dateiname.
Ah, gut, das ist, warum. Siehe meine aktualisierte Antwort.
InformationsquelleAutor thoaionline | 2009-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code in dieser Frage verwenden Sie die veraltet REST-APIs, das wird bald eingestellt.
Dem richtigen Weg ist jetzt:
Erinnere mich an die
$fbk->setFileUploadSupport(true);
InformationsquelleAutor Madarco
Ausgehend von den Fehler, Ihre Anfrage nicht ordnungsgemäß signiert.
Ich warf einen kurzen Blick auf die facebook-API-docs und Ihre signRequest () - Funktion sieht ungefähr richtig für mich.
Also werde ich schlage vor, Sie überprüfen Sie das offensichtliche: dass Ihre $Geheimnis ist die richtige.
EDIT: Deine Antwort auf die Fragen in den Kommentaren stellen Sie es sehen, der mich nun. Ich weiß nicht, wie die facebook-Server Umgang mit binären Daten und Signaturen, aber deine Signatur basiert auf das @-Präfix Pfadname. Facebook sieht nie, dass Pfadnamen, da cURL sendet den Inhalt der Datei. Also gibt es keine Möglichkeit, dass facebook rekonstruieren können, die Unterschrift und überprüfen Sie es.
Überprüfen Sie die facebook-Dokumentation für den Anruf, den Sie machen, sehr vorsichtig. Möglicherweise benötigen Sie die Datei auslassen von deinem Signatur-generation, der-oder base64-codieren, oder wer weiß was.
Aber es ist klar, dass dein code sendet eine Signatur, die facebook nicht überprüfen kann, denn es sieht nie auch nur im entferntesten ähnlich "@/home/thoai/htdocs/apps/bemyfans/Lenna.png" in Ihrem Antrag.
InformationsquelleAutor timdev
Sind Sie bei der Beantragung über alle Argumente, einschließlich der Datei-argument. Um eine korrekte Signatur, die Sie unterzeichnen müssen Wunsch ohne die Datei-argument in args.
InformationsquelleAutor Bradly Feeley
Ich denke, Sie tun es alle falsch
Blick auf meinen code
Dies funktioniert für mich
InformationsquelleAutor Akintayo A. Olusegun