PHP Instagram友谊/创建/错误

时间:2015-06-19 17:48:13

标签: php instagram instagram-api

我在Instagram上尝试友谊/创造/功能,但我有一些错误。

帐户/登录功能正在运行。

友谊/创建错误:"请更新您的Instagram应用以继续关注。"

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');
}

2 个答案:

答案 0 :(得分:0)

修改此行:

$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"}';

您错过了请求中的user_id参数。

答案 1 :(得分:-1)

您正在尝试使用Instagram的使用条款不允许的私有API,因此只有在那里工作的人才知道这里缺少的内容。

公共API可以实现您想要在此处执行的操作:https://instagram.com/developer/endpoints/relationships/#post_relationship