2015-06-19 12 views
5

Ho provato ad amicizie/crea/funzione su Instagram ma ho qualche errore.PHP Instagram amicizie/crea/Errore

La funzione account/login funziona.

amicizie/creare errore: "Aggiorna la tua app di Instagram per continuare a seguire".

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

Hai trovato una soluzione per questo? –

risposta

-1

Si sta tentando di utilizzare API private, che non è consentito dalla Condizioni di utilizzo di Instagram, in modo che solo le persone che ci lavorano sapeva che cosa è manca qui.

Ci sono API pubbliche che possono raggiungere ciò che si voleva fare qui: https://instagram.com/developer/endpoints/relationships/#post_relationship

+0

La mia app è nuova. Quindi non posso aggiungere l'ambito delle relazioni. Conosci una soluzione per le nuove app? –

+0

Devi inviare l'app per la revisione, quindi puoi utilizzare l'ambito delle relazioni. Non c'è altro modo per afaik. –

0

Modificare questa linea:

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

di essere

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

vi siete persi la user_id parametro all'interno della richiesta.

+0

Il '' '$ user_id''' è uguale a' '' $ username'''? –

Problemi correlati