wake-up-neo.com

So stellen Sie Bilder mithilfe von API in Instagram bereit

Ich baue eine PHP-Anwendung, die das vom Nutzer 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 bieten sollte Ich bin mir nicht sicher, ob es eine andere Möglichkeit gibt (mit Ausnahme der Apps für Android und iOS), Bilder mit PHP hochzuladen. Bitte geben Sie mir eine Idee, ob es eine Möglichkeit gibt.

Ich lese auch das,

Wie teile ich einen Link und ein Foto mit Instagram mit PHP

Vielen Dank

81
Altaf Hussain

Wenn Sie den Link lesen, den Sie geteilt haben, lautet die akzeptierte Antwort:

Sie können über die API keine Bilder auf Instagram posten.

Es scheint, dass Sie instagram auf dem PC emulieren können.

Bluestacks ist ein Emulator, mit dem Sie Android-Apps auf Ihrem PC/Mac usw. ausführen können.

Ich bin mir nicht sicher, wie gut es funktioniert.

68
Albzi

Aktualisieren:

Instagram verbietet nun Konten und entfernt die auf dieser Methode basierenden Bilder. Bitte mit Vorsicht verwenden.


Es scheint, dass jeder, der diese Frage mit etwas in der Art von it can't be done beantwortet hat, etwas korrekt ist. 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).'/'.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 in Ihren Texteditor, ändern Sie die wenigen Variablen entsprechend und VOILA! Ich habe einen Artikel darüber geschrieben und ich habe es viele Male gemacht. Sehen Sie eine Demo hier .

89
Lance

Für Benutzer, die diese Frage finden, können Sie Fotos an den Instagram-Freigabefluss (von Ihrer App an den Filterbildschirm) auf dem iPhone mithilfe von iPhone-Hooks übergeben: http://help.instagram.com/355896521173347 Andernfalls In Version 1 der API gibt es derzeit keine Möglichkeit. 

5
Amru E.

UPDATE Jetzt ist es möglich:

https://developers.facebook.com/docs/instagram-api/content-publishing

Die Content Publishing-API ist eine Teilmenge der Instagram Graph-API-Endpunkte, mit der Sie Medienobjekte veröffentlichen können. Das Veröffentlichen von Medienobjekten mit dieser API besteht aus zwei Schritten: Sie erstellen zunächst einen Medienobjektcontainer und veröffentlichen dann den Container in Ihrem Geschäftskonto.

5
Tom Roggero

Instagram ermöglicht es Unternehmen jetzt, ihre Posts mit den neuen Endpunkten der Content Publishing Beta zu planen. 

https://developers.facebook.com/blog/post/2018/01/30/instagram-graph-api-updates/

Dieser Blogbeitrag - https://business.instagram.com/blog/instagram-api-features-updates - macht jedoch deutlich, dass sie diese API nur für Facebook-Marketingpartner oder Instagram-Partner öffnen.

Um mit dem Planen von Beiträgen zu beginnen, arbeiten Sie mit einem unserer Facebook-Marketingpartner oder Instagram-Partner.

Dieser Link von Facebook - https://developers.facebook.com/docs/instagram-api/content-publishing - listet es als geschlossene Beta auf. 

Die Content Publishing-API befindet sich in einer geschlossenen Beta mit Facebook Marketing Nur Partner und Instagram-Partner. Wir akzeptieren keine neuen Bewerber zu diesem Zeitpunkt.

Aber so würden Sie es tun:

Sie haben ein Foto bei ...

https://www.example.com/images/bronz-fonz.jpg

Sie möchten es mit dem Hashtag "#BronzFonz" veröffentlichen.

Sie können den /user/media-Rand verwenden, um den Container folgendermaßen 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 (beispielsweise 17889455560051444) zurückgeben, die Sie dann mithilfe des/user/media_publish-Edge wie folgt veröffentlichen:

POST graph.facebook.com
  /17841405822304914/media_publish
    ?creation_id=17889455560051444

Dieses Beispiel aus den docs .

3
Joshua Dance

Es gibt keine API zum Posten von Fotos in Instagram mithilfe der API. Es gibt jedoch eine einfache Möglichkeit, die Google-Erweiterung "User Agent" zu installieren. Dadurch wird Ihr Browser auf die Android mobile chrome -Version umgestellt. Hier ist der Erweiterungslink https://chrome.google.com/webstore/detail/user-agent-switcher/clddifkhlkcojbojppdojfeeikdkgiae?utm_source=chrome-ntp-icon

klicken Sie einfach auf das Erweiterungssymbol und wählen Sie chrome für Android und öffnen Sie Instagram.com

0
Waheed Sabir

Noch einfacher, wenn Sie Concrete Social API verwenden. Beachten Sie, dass Sie sowohl Bilder als auch Videos veröffentlichen können (meda_type kann entweder 'image' oder 'video' sein).

curl --request POST \
  --url https://concretesocial.io/1.0/publish \
  --data '{ "caption":"Wonderful",
            "media_type" : "image",
            "media_url" : "https://cdn.pixabay.com/photo/2018/10/28/16/11/landscape-3779159_1280.jpg", 
            "profiles" : ['5c21013a8c93b0050877659d']"}'                    

Vollständige Offenlegung - Ich habe diese API erstellt :)

0
Chris Bovan

Ich habe versucht, IFTTT und viele andere Dienste zu verwenden, aber alle machten etwas oder posteten von Instagram auf einer anderen Plattform, nicht auf Instagram. Ich habe mehr darüber gelesen, dass Instagram derzeit keine solche API bietet.

Die Verwendung des blauen Stapels erfordert wiederum eine umfangreiche Installation und die manuelle Ausführung von Aufgaben.

Sie können jedoch Ihr Google Chrome auf der Desktop-Version verwenden, um einen Beitrag bei Instagram zu erstellen. Es braucht ein bisschen Tweak.

  1. Öffne dein Chrom und stöbere auf Instagram.com
  2. Gehen Sie zum Element inspizieren, indem Sie mit der rechten Maustaste auf Chrom klicken.
  3. Wählen Sie im oberen rechten Korener-Menü unter den Entwicklerwerkzeugen ein weiteres Werkzeug aus.
  4. Wählen Sie außerdem die Netzwerkbedingungen aus.
  5. Im Abschnitt zur Netzwerkauswahl finden Sie den zweiten Abschnitt des dort genannten Benutzeragenten.
  6. Deaktivieren Sie automatisch auswählen und wählen Sie chrome für Android aus der Liste des angegebenen Benutzeragenten.
  7. Aktualisieren Sie Ihre Instagram.com-Seite.

Sie werden bemerken, dass sich die Benutzeroberfläche ändert und Sie die Möglichkeit haben, einen Beitrag auf Instagram zu erstellen. Ihr Leben ist jetzt einfach. Geben Sie mir einen einfacheren Weg, wenn Sie einen finden können. 

 enter image description here

Ich habe am https://www.inteligentcomp.com/2018/11/wie-nach-upload-nach-instagram-von-pc-mac.html darüber geschrieben.

0