2015-06-19 8 views
5

Ich versuche, Freundschaften/erstellen/funktionieren in Instagram, aber ich habe einen Fehler.PHP Instagram Freundschaften/create/Fehler

Konto/Login-Funktion funktioniert.

Freundschaften/create Fehler: "Bitte aktualisieren Sie Ihre Instagram-App, um fortzufahren."

require_once("instagram.php"); 
$username = ''; 
$password = ''; 
$agent = 'Instagram 6.21.2 Android (19/4.4.2; 480dpi; 1152x1920; Meizu; MX4; mx4; mt6595; en_US)'; 
$guid = GenerateGuid(); 
$device_id = "android-".$guid; 
$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=6'; 
$login = SendRequest('accounts/login/', true, $data, $agent, false); 
print_r($login); 

/********** 

Login working successfully! No problem... 

***********/ 

/********* 
But error area is here. 
**********/ 

$device_id = "android-".$guid; 
$data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","device_timestamp":"'.time().'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; 
$sig   = GenerateSignature($data); 
$new_data  = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=6'; 
$follow   = SendRequest('friendships/create/29180689', true, $new_data, $agent, true); 

=== === instagram.php

function SendRequest($url, $post, $post_data, $user_agent, $cookies) { 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://instagram.com/api/v1/'.$url); 
/* 
curl_setopt($ch, CURLOPT_PROXY, $proxy); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); 
*/ 
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 GenerateSignature($data) { 
return hash_hmac('sha256', $data, '25eace5393646842f0d0c3fb2ac7d3cfa15c052436ee86b5406a8433f54d24a5'); 
} 
+0

Haben Sie eine Lösung gefunden? –

Antwort

-1

Sie versuchen private APIs zu verwenden, die nicht von Instagram der Nutzungsbedingungen, so dass nur Menschen, die dort arbeiten erlaubt ist, wussten, was fehlt hier.

sind es öffentliche APIs, die erreichen können, was Sie hier tun wollte: https://instagram.com/developer/endpoints/relationships/#post_relationship

+0

Meine App ist neu. Also kann ich keinen Beziehungsumfang hinzufügen. Kennen Sie eine Lösung für neue Apps? –

+0

Sie müssen die App zur Überprüfung einreichen, dann können Sie den Beziehungsumfang verwenden. Es gibt keinen anderen Weg um afaik. –

0

Ändern Sie diese Zeile:

$data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","device_timestamp":"'.time().'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; 

$data = '{"user_id":"'.$user_id.'","device_id":"'.$device_id.'","guid":"'.$guid.'","device_timestamp":"'.time().'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; 

Sie die user_id verpasst werden Parameter innerhalb der Anfrage.

+0

Ist '' '$ user_id''' identisch mit' '' $ username'''? –