Ich baue eine PHP-Anwendung, die das vom Benutzer hochgeladene Bild direkt auf Instagram posten muss, aber nach einer kurzen Suche habe ich festgestellt, dass es keine solche Funktion in der API gibt 🙁 und es fühlt sich komisch an … weil sie eine bereitstellen sollten. I Ich bin mir nicht sicher, ob es eine andere Möglichkeit gibt (außer den Apps für Android und iOS), Bilder mit PHP hochzuladen. Bitte geben Sie mir eine Idee, wenn es eine Möglichkeit gibt.
Das habe ich auch gelesen,
Wie teile ich mit PHP einen Link und ein Foto mit Instagram?
Es ist nicht möglich, Bilder über die API auf Instagram zu posten.
@MichalStefanow Ich fand es auch eine gute Frage. Diese Blog-Ankündigung enthält auch einen Kommentar von Hootsuite (im Kommentarbereich unter dem Artikel), dass es aufgrund von API-Beschränkungen kein tatsächliches direktes Posten auf Instagram gibt und das endgültige Posten in Instagram erfolgen muss.
– die allgemeine Monatslektüre
5. Januar 2016 um 23:47 Uhr
Und Mitte 2019? Gibt es Änderungen?
– Benutzerland
8. Juli 2019 um 2:19 Uhr
Wie wäre es mit 2021, ist das immer noch nicht möglich?
– Benutzer
18. April 2021 um 23:34 Uhr
Lanze
Aktualisieren:
Instagram sperrt jetzt Konten und entfernt die Bilder basierend auf dieser Methode. Bitte mit Vorsicht verwenden.
Es scheint, dass jeder, der diese Frage beantwortet hat, mit etwas in der Art von it can't be done ist einigermaßen richtig. Offiziell können Sie mit ihrer API kein Foto auf Instagram posten. Wenn Sie die API jedoch zurückentwickeln, können Sie dies tun.
function SendRequest($url, $post, $post_data, $user_agent, $cookies) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://i.instagram.com/api/v1/'.$url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($post) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
if($cookies) {
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
} else {
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
}
$response = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return array($http, $response);
}
function GenerateGuid() {
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(16384, 20479),
mt_rand(32768, 49151),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535));
}
function GenerateUserAgent() {
$resolutions = array('720x1280', '320x480', '480x800', '1024x768', '1280x720', '768x1024', '480x320');
$versions = array('GT-N7000', 'SM-N9000', 'GT-I9220', 'GT-I9100');
$dpis = array('120', '160', '320', '240');
$ver = $versions[array_rand($versions)];
$dpi = $dpis[array_rand($dpis)];
$res = $resolutions[array_rand($resolutions)];
return 'Instagram 4.'.mt_rand(1,2).'.'.mt_rand(0,2).' Android ('.mt_rand(10,11)."https://stackoverflow.com/".mt_rand(1,3).'.'.mt_rand(3,5).'.'.mt_rand(0,5).'; '.$dpi.'; '.$res.'; samsung; '.$ver.'; '.$ver.'; smdkc210; en_US)';
}
function GenerateSignature($data) {
return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916');
}
function GetPostData($filename) {
if(!$filename) {
echo "The image doesn't exist ".$filename;
} else {
$post_data = array('device_timestamp' => time(),
'photo' => '@'.$filename);
return $post_data;
}
}
// Set the username and password of the account that you wish to post a photo to
$username="ig_username";
$password = 'ig_password';
// Set the path to the file that you wish to post.
// This must be jpeg format and it must be a perfect square
$filename="pictures/test.jpg";
// Set the caption for the photo
$caption = "Test caption";
// Define the user agent
$agent = GenerateUserAgent();
// Define the GuID
$guid = GenerateGuid();
// Set the devide ID
$device_id = "android-".$guid;
/* LOG IN */
// You must be logged in to the account that you wish to post a photo too
// Set all of the parameters in the string, and then sign it with their API key using SHA-256
$data="{"device_id":"".$device_id.'","guid":"'.$guid.'","username":"'.$username.'","password":"'.$password.'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$data="signed_body=".$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
$login = SendRequest('accounts/login/', true, $data, $agent, false);
if(strpos($login[1], "Sorry, an error occurred while processing this request.")) {
echo "Request failed, there's a chance that this proxy/ip is blocked";
} else {
if(empty($login[1])) {
echo "Empty response received from the server while trying to login";
} else {
// Decode the array that is returned
$obj = @json_decode($login[1], true);
if(empty($obj)) {
echo "Could not decode the response: ".$body;
} else {
// Post the picture
$data = GetPostData($filename);
$post = SendRequest('media/upload/', true, $data, $agent, true);
if(empty($post[1])) {
echo "Empty response received from the server while trying to post the image";
} else {
// Decode the response
$obj = @json_decode($post[1], true);
if(empty($obj)) {
echo "Could not decode the response";
} else {
$status = $obj['status'];
if($status == 'ok') {
// Remove and line breaks from the caption
$caption = preg_replace("/\r|\n/", "", $caption);
$media_id = $obj['media_id'];
$device_id = "android-".$guid;
$data="{"device_id":"".$device_id.'","guid":"'.$guid.'","media_id":"'.$media_id.'","caption":"'.trim($caption).'","device_timestamp":"'.time().'","source_type":"5","filter_type":"0","extra":"{}","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$new_data="signed_body=".$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
// Now, configure the photo
$conf = SendRequest('media/configure/', true, $new_data, $agent, true);
if(empty($conf[1])) {
echo "Empty response received from the server while trying to configure the image";
} else {
if(strpos($conf[1], "login_required")) {
echo "You are not logged in. There's a chance that the account is banned";
} else {
$obj = @json_decode($conf[1], true);
$status = $obj['status'];
if($status != 'fail') {
echo "Success";
} else {
echo 'Fail';
}
}
}
} else {
echo "Status isn't okay";
}
}
}
}
}
}
Kopieren Sie einfach den obigen Code und fügen Sie ihn in Ihren Texteditor ein, ändern Sie die wenigen Variablen entsprechend und VOILA! Ich schrieb ein Artikel darüber und ich habe es viele Male getan. Sehen Sie sich eine Demo an Hier.
Anmeldung mit obigem Code ohne Telefon nicht möglich. Ich habe gerade localhost mit PC verwendet und habe gerade eine Fehlermeldung wie **** Leere Antwort vom Server erhalten, während ich versucht habe, mich anzumelden *** wie man diesen Fehler löst
– Rabesh Lal Shrestha
24. März 2015 um 12:22 Uhr
Gibt es bereits eine funktionierende .net-Variante dieses Codes? Ich kann nicht mit PHP arbeiten und eine .NET-Version dieses Codes wäre wirklich nützlich!
– Yosoyke
22. April 2015 um 19:11 Uhr
Ich konnte das Skript erfolgreich auf einem neuen Instagram-Konto ausführen.
– Loretoparisi
16. September 2015 um 12:17 Uhr
Wenn Sie bekommen status isnt okaystellen Sie sicher, dass CURL die Berechtigung hat, eine cookies.txt-Datei zu erstellen. chmod 777 /directory werde dies tun (sei vorsichtig). Ich erhalte eine Erfolgsmeldung von Ihrem Skript, aber der Beitrag wird nicht auf Instagram angezeigt. Funktioniert das noch?
– kmoney12
9. April 2016 um 9:27 Uhr
Der Code funktioniert gut, aber die GUI und die Geräte-ID ändern sich jedes Mal und Instagram hat mein Konto nach einem einzigen erfolgreichen Beitrag GESPERRT. das Foto wurde auch entfernt.
– Alp Altunel
14. April 2017 um 13:15 Uhr
Albzi
Wenn Sie den von Ihnen geteilten Link lesen, lautet die akzeptierte Antwort:
Sie können keine Bilder über die API auf Instagram posten.
Das hat Instagram jetzt gesagt:
Jetzt können Sie Ihre Inhalte ab dem 26. Januar 2021 mit den Effekten der Instagram-APIs (neu) posten!
Nun, wenn es KEINEN Weg gibt, dann gibt es wohl auch keinen ‘anderen’ Weg.
– Albzi
17. September 2013 um 9:08 Uhr
@bart zum Zeitpunkt des Postings von @Ritu hat es Instagram gemacht und war es posts.so nicht postso.com
– Albzi
5. Januar 2015 um 8:34 Uhr
@usama leider nicht offiziell, aber ich habe Gerüchte gehört, dass Sie dies tun können, wenn Sie auf ihre Website gehen und sie auf die mobile Ansicht herunterskalieren. Habe es aber selbst nicht probiert
– Albzi
2. Juli 2017 um 13:16 Uhr
@Albzi Wenn Sie Google Chrome verwenden; Gehen Sie auf die Instagram-Website und klicken Sie mit der rechten Maustaste und verwenden Sie “Inspect”, um die Größe zu ändern und den Header in eine mobile Browsersignatur zu ändern. Möglicherweise müssen Sie die Instagram-Seite einmal in “Inspect” aktualisieren, aber Sie können die Website als Handy verwenden und Fotos posten und vieles mehr. Aber; Dies hilft nicht bei der API-Frage. Ich würde gerne ein Foto von PHP auf Instagram posten, das das Endergebnis unserer Teams zeigt.
– Dawson Irvine
20. Januar 2019 um 3:35 Uhr
Gutes Argument. @BrodaNoel, vielleicht sollte ich das auf keinen “offiziellen” Weg ändern.
Die Inhaltsveröffentlichungs-API ist eine Teilmenge von Instagram Graph-API-Endpunkten, mit denen Sie Medienobjekte veröffentlichen können. Das Veröffentlichen von Medienobjekten mit dieser API ist ein zweistufiger Prozess – Sie erstellen zuerst einen Medienobjektcontainer und veröffentlichen dann den Container in Ihrem Geschäftskonto.
Es ist erwähnenswert, dass „die Content-Publishing-API nur mit Facebook-Marketingpartnern und Instagram-Partnern in der geschlossenen Beta-Phase ist. Wir akzeptieren derzeit keine neuen Bewerber.“
– William Schied
7. April 2018 um 12:22 Uhr
Gilt dies nur für Geschäftskonten?
– Sonnenfänger
7. Februar 2019 um 21:03 Uhr
Wie ist das eine Antwort? Es ist nicht möglich, diese API ist nur für Partner…
– Matej J
2. März 2020 um 13:08 Uhr
Da steht Seite nicht gefunden!
– Mohammed Imran
23. Juli 2020 um 12:15 Uhr
Instagram ermöglicht es Unternehmen jetzt, ihre Posts zu planen, indem sie die neuen Beta-Endpunkte für die Inhaltsveröffentlichung verwenden.
Die Inhaltsveröffentlichungs-API befindet sich nur mit Facebook-Marketingpartnern und Instagram-Partnern in der geschlossenen Betaphase. Wir nehmen derzeit keine neuen Bewerber an.
Aber so würdest du es machen:
Du hast ein Foto bei…
https://www.example.com/images/bronz-fonz.jpg
Sie wollen es mit dem Hashtag „#BronzFonz“ veröffentlichen.
Du könntest die verwenden /user/media edge, um den Container wie folgt zu erstellen:
POST graph.facebook.com
/17841400008460056/media?
image_url=https%3A%2F%2Fwww.example.com%2Fimages%2Fbronz-fonz.jpg&
caption=%23BronzFonz
Dies würde eine Container-ID (z. B. 17889455560051444) zurückgeben, die Sie dann wie folgt mit dem Edge /user/media_publish veröffentlichen würden:
POST graph.facebook.com
/17841405822304914/media_publish
?creation_id=17889455560051444
Ich habe versucht, IFTTT und viele andere Dienste zu verwenden, aber alle haben Dinge getan oder von Instagram auf einer anderen Plattform gepostet, nicht auf Instagram. Ich habe mehr darüber gelesen, dass Instagram derzeit keine solche API anbietet.
Die Verwendung von Blue Stack erfordert wiederum eine umfangreiche Installation und nur manuelles Ausführen von Dingen.
Sie können jedoch Ihr Google Chrome in der Desktop-Version verwenden, um einen Beitrag auf Instagram zu erstellen. Es braucht ein bisschen Anpassung.
Öffnen Sie Ihr Chrome und durchsuchen Sie Instagram.com
Gehen Sie zum Element prüfen, indem Sie mit der rechten Maustaste auf Chrom klicken.
Wählen Sie im Dropdown-Menü oben rechts im Corener-Menü unter Entwicklertools weitere Tools aus.
Wählen Sie weitere Netzwerkbedingungen aus.
Sehen Sie sich im Abschnitt Netzwerkauswahl den zweiten Abschnitt mit dem Namen Benutzeragent an.
Deaktivieren automatisch auswählenund wählen Sie aus Chrom für Android aus der Liste des angegebenen Benutzeragenten.
Aktualisieren Sie Ihre Instagram.com-Seite.
Sie werden eine Änderung in der Benutzeroberfläche und die Option zum Posten auf Instagram bemerken. Ihr Leben ist jetzt einfach. Lassen Sie mich einen einfacheren Weg wissen, wenn Sie einen finden können.
Ich habe gerade mit derselben Methode gepostet. Es funktioniert absolut gut. Siehe Screenshot im Update.
– Dheeraj Thedijje
18. Mai 2020 um 12:19 Uhr
das ist genial!
– Thomas G.
22. August 2020 um 14:16 Uhr
Für alle, die nach einer Lösung zum Posten auf Instagram suchen AWS-Lambda und Puppenspieler (chrom-aws-lambda). Beachten Sie, dass diese Lösung erlauben Ihnen, nur 1 Foto für jeden Beitrag zu posten. Wenn Sie Lambda nicht verwenden, ersetzen Sie es einfach chrome-aws-lambda mit puppeteer.
Beim ersten Start von Lambda ist es normal, dass dies nicht funktioniert, da Instagram dies erkennt „Verdächtiger Anmeldeversuch“. Rufen Sie einfach mit Ihrem PC die Instagram-Seite auf und genehmige essollte alles in Ordnung sein.
Hier ist mein Code, Sie können ihn gerne optimieren:
Es muss ein lokaler Dateipfad sein, wenn es sich um eine URL handelt, laden Sie sie zuerst in den /tmp-Ordner herunter.
Aktualisiert:
Instagram blockiert jetzt alle verdächtigen Anmeldeversuche, es sei denn, Sie genehmigen sie bei jeder Ausführung manuell. Um das zu lösen, speichern Sie Ihre Cookies besser als JSON und importieren Sie sie in Puppeteer.
Aber du kannst nichts posten.
– Rajan Verma – Aarvy
18. Mai 2020 um 3:54 Uhr
Ich habe gerade mit derselben Methode gepostet. Es funktioniert absolut gut. Siehe Screenshot im Update.
– Dheeraj Thedijje
18. Mai 2020 um 12:19 Uhr
das ist genial!
– Thomas G.
22. August 2020 um 14:16 Uhr
Für Benutzer, die diese Frage finden, können Sie Fotos mithilfe von iPhone-Hooks an den Instagram-Sharing-Flow (von Ihrer App an den Filterbildschirm) auf dem iPhone weitergeben: http://help.instagram.com/355896521173347 Abgesehen davon gibt es in Version 1 der API derzeit keine Möglichkeit.
@Ritu interessant. Es muss dann möglich sein, aber es scheint nicht so, als ob die API dies zulässt. Danke fürs Teilen, ich will es mir anschauen.
– Amru E.
11. Dezember 2013 um 17:44 Uhr
Ich habe mich auch gefragt, wie sie es machen. Bitte teilen Sie es mit, wenn Sie etwas Relevantes erhalten.
– Ritu
12. Dezember 2013 um 5:39 Uhr
Es scheint, dass die meisten nicht autorisierten Clients die API zurückentwickeln, indem sie den SSL-Verkehr von der App zum Server entschlüsseln und überwachen. Dies gilt zumindest für Snapchat. Könnte hier genauso sein.
– Amru E.
25. November 2014 um 9:28 Uhr
Die Flume-App für Mac postet auch in Ihrem Feed
– Josua – Pendo
4. Januar 2017 um 14:06 Uhr
9641400cookie-checkSo posten Sie Bilder über die API auf Instagramyes
Es ist nicht möglich, Bilder über die API auf Instagram zu posten.
– Amal Murali
17. September 2013 um 8:18 Uhr
Ich frage mich, wie sie – blog.hootsuite.com/schedule-instagram-posts-in-hootsuite – Mach es… (Blogankündigung wurde vor 8 Stunden gepostet)
– Mars Robertson
5. August 2015 um 21:45 Uhr
@MichalStefanow Ich fand es auch eine gute Frage. Diese Blog-Ankündigung enthält auch einen Kommentar von Hootsuite (im Kommentarbereich unter dem Artikel), dass es aufgrund von API-Beschränkungen kein tatsächliches direktes Posten auf Instagram gibt und das endgültige Posten in Instagram erfolgen muss.
– die allgemeine Monatslektüre
5. Januar 2016 um 23:47 Uhr
Und Mitte 2019? Gibt es Änderungen?
– Benutzerland
8. Juli 2019 um 2:19 Uhr
Wie wäre es mit 2021, ist das immer noch nicht möglich?
– Benutzer
18. April 2021 um 23:34 Uhr