Я использую mgp25 частный Instagram API для моих нужд.
Время от времени я получаю сообщение об ошибке ChallengeRequired, которое решаю, как показано ниже:
/**
* Резолвим челлендж
*
* @param array $data
* @return bool
* @throws UserRegistrationException
*/
public function resolveChallenge(array $data): bool
{
$this->client = $this->getInstagramClient();
$this->client->changeUser($data['login'], $data['password']);
$customResponse = $this->client->request($data['url'])->setNeedsAuth(false)->addPost("security_code", $data['code'])->getDecodedResponse();
if (!is_array($customResponse)) {
throw new Exception('Не удалось подтвердить вход');
}
$this->isMakeLogin = true;
// Зашли
if ($customResponse['status'] == "ok" && isset($customResponse['logged_in_user']) && (int)$customResponse['logged_in_user']['pk'] === (int)explode('/', $data['url'])[1]) {
return $this->registerUserIfNotExists($data['login'], $data['password']);
}
// mgp25
if ($customResponse['status'] === 'ok' && $customResponse['action'] === 'close') {
return $this->registerUserIfNotExists($data['login'], $data['password']);
}
throw new Exception(isset($customResponse['message']) ? $customResponse['message'] : json_encode($customResponse));
}
После того, как проблема решена, я вызываю функцию:
return $this->registerUserIfNotExists($data['login'], $data['password']);
Который вызывает метод API входа и запрашивает некоторые данные учетной записи, и иногда я снова получаю сообщение об ошибке ChallengeRequired (цикл).
Какова причина?
Задача ещё не решена.
Других решений пока нет …