2015-06-19 12 views
5

Próbuję nawiązać przyjaźnie/utworzyć/funkcję na Instagramie, ale mam błąd.Znajomi na Instagramie PHP/tworzenie/Błąd

działa funkcja konta/logowania.

przyjaźń/utwórz Błąd: "Zaktualizuj aplikację Instagram, aby kontynuować."

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

Czy znalazłeś poprawkę? –

Odpowiedz

-1

Próbujesz użyć prywatnych API, który nie jest dozwolony przez Warunki Instagram za użytkowania, więc tylko ludzie, którzy tam pracuje wiedział co brakuje tutaj.

Nie jesteśmy publicznych interfejsów API, które można osiągnąć to, co chciał zrobić tutaj: https://instagram.com/developer/endpoints/relationships/#post_relationship

+0

Moja aplikacja jest nowa. Nie mogę więc dodać zakresu relacji. Czy znasz rozwiązanie dla nowych aplikacji? –

+0

Musisz przesłać aplikację do sprawdzenia, możesz użyć zakresu relacji. Nie ma innego sposobu na afaiku. –

0

Zmień ten wiersz:

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

być

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

Przegapiłeś user_id parametr w ramach żądania.

+0

Czy '' '$ user_id''' jest takie samo jak' '' $ username''''? –

Powiązane problemy