Instagram Документация: https://instagram.com/developer/secure-api-requests/Instagram API Принудительно Подпись просит подпись не совпадает Error
Цель: Соблюдать с [в настоящее время обязательным] Принудительно Подписанные пожеланиях с помощью Instagram API.
Функциональная проблема: без соблюдения требований IG. Как и пределы 30 часов в час. ОТВЕЧАЮЩИХ позволяет 100 лайков в час
Техническая проблема: следующая ошибка возвращается при выполнении простой вызов к API для СМИ:
{"code": 403, "error_type": "OAuthForbiddenException", "error_message": "Invalid signed-request: Signature does not match"}
Instagram Client Настройка: идентификатор клиента, клиент Secret, Redirect URI были проверены, чтобы соответствовать тем, которые используются во всех частях кода PHP. Проверяются как «Отключить неявные OAuth», так и «Enforce signed requests».
Код Пояснение: Для создания рукопожатия с IG: необходимы три различных фрагмента кода: 1. Заголовок 2. Токен доступа (т. "access_token"] 3. Вызовите с помощью Sig [т.е. «sig» - не путать с «подписью»]. Я подтвердил, что те же client_id, client_secret и access_token используются во всех частях кода. ПРИМЕЧАНИЕ. Части 1 и 2 работают [ed] штрафа до обязательного соответствия. Они все еще работают нормально, но я получаю только 30 Likes/hr [т.е. основной функциональный вопрос]
Заголовок Код:
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$this->signature = $ip .'|'. hash_hmac('sha256', $ip, $this->settings['client_secret'], false);
Токен доступа код, который успешно возвращается с массивом аналогично { "access_token": "11deadbee7.7dded5e.c0d656eead134218beef31a61b45e4d9", ...}
$apiData = array(
'grant_type' => 'authorization_code',
'client_id' => $this->getApiKey(),
'client_secret' => $this->getApiSecret(),
'redirect_uri' => $this->getApiCallback(),
'code' => $code
);
$ch = curl_init();
$xHeaderFront = 'X-Insta-Forwarded-For:';
$xHeader = $xHeaderFront.$this->signature;
curl_setopt($ch, CURLOPT_URL, $apiHost);
curl_setopt($ch, CURLOPT_POST, count($apiData));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($apiData));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$jsonData = curl_exec($ch);
curl_close($ch);
Звоните с Sig. Это возвращает ошибку { "код": 403, "ERROR_TYPE": "OAuthForbiddenException", "ERROR_MESSAGE": "Invalid зарегистрированны запрос: Подпись не соответствует"}:
$params = array(); //temporary to force a simple set of parameters
$params['count']=10;
$params['access_token'] = $this->getAccessToken(); //11deadbee7.7dded5e.c0d656eead134218beef31a61b45e4d9 masked, but kept for ease of comparison]
$endpoint = '/media/657988443280050001_25025320'; //temporary
$sig = $endpoint;
ksort($params);
foreach ($params as $key => $val) {
$sig .= "|$key=$val";
}
$enforcedSig = hash_hmac('sha256', $sig, $secret, false);
$apiCall = 'https://api.instagram.com/v1/media/657988443280050001_25025320/likes?sig='.$enforcedSig.'&count=10&access_token='.$params['access_token'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiCall);
$xHeaderFront = 'X-Insta-Forwarded-For:';
$xHeader = $xHeaderFront.$this->signature;
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json',$xHeader));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$jsonData = curl_exec($ch);
curl_close($ch);
Некоторые из самых простых вещей! Спасибо soooo много! –