Instagram возвращает "Соответствующий код не был найден или уже использовался" при использовании OAuth

Я пытаюсь использовать Instagram OAuth, используя документацию разработчика на

https://www.instagram.com/developer/authentication/.

Шаг 1 и 2 работают без проблем, поэтому у меня есть свой Client-ID, Client-Secret, Redirect-URI и код.

Но каждый раз, когда я пытаюсь получить Acces Token Я получаю следующую ошибку:

{
"code": 400, 
"error_type": "OAuthException", 
"error_message": "Matching code was not found or was already used."
}

Любые советы, как решить эту проблему?

7 ответов

Решение

Мы испытываем ту же проблему. Похоже, что выход из Instagram, а затем попытка использования Instagram OAuth через наш сайт после выхода из Instagram - это обходной путь.

Со вчерашнего дня мы столкнулись с той же проблемой (после нескольких месяцев нормальной работы) - вчера мы сообщили о ней как о проблеме через функцию "Сообщить о проблеме" на https://www.instagram.com/developer/clients/manage/ и я Я бы посоветовал вам сделать то же самое.

Тем не менее, чтобы услышать ответ, но, скорее всего, это их проблемы, а не то, что мы делаем.

РЕДАКТИРОВАТЬ: Это также хорошо работает для нас на наших серверах разработки (которые используют разные IP-адреса для взаимодействия с API IG), но не работает на нашем производственном сервере с любого из IP-адресов, которые мы имеем на рабочем сервере.

РЕДАКТИРОВАТЬ 2: (июль 2016) Только что протестировал, и он загадочным образом снова начал работать на наших производственных серверах. Нет ответа на тикет поддержки от Instagram пока.

РЕДАКТИРОВАТЬ 3: (декабрь 2016) И теперь он снова терпит неудачу с тем же сообщением... Похоже, это конец Instagram снова. Ничего особенного мы не можем сделать. Разочарование.

Войдите в Instagram, затем выполните Шаг 1 из Документов API (https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code), затем выполните переадресацию и скопируйте код из URL, затем выйдите из моей учетной записи и выполните Шаг 3:

curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token

Это сработало для меня.

Обновление: Удалил всю историю посещенных страниц, очистил кеш и т. Д. Как будто это был совершенно новый браузер, и теперь он работает без проблем.

Я уже несколько недель бьюсь об аутентичном URL. Тестирование и использование одного и того же сохраненного токена для повторной авторизации. Может быть, хранимые токены имеют ограничение на количество повторного использования?

======

Имея ту же проблему, что и сегодня. Ранее авторизация работала нормально - теперь я получаю тот же ответ "Соответствующий код...".

Несколько раз входил и выходил из моей учетной записи Instagram, создавал новый идентификатор приложения и отключал / включал Implicit Oauth - все безуспешно.

Представление "Авторизованные приложения" в моей учетной записи Instagram сообщает, что мое приложение действительно было авторизовано, но я не могу звонить в API. Аутентификация через окно Incognito вернула успешный ответ, но это не решение.

Попытался сообщить в Instagram через форму "Сообщить о проблеме", но я не смогу отправить форму.

У меня такое же сообщение об ошибке. Спустя 2 часа пробуя все обходные пути, я понял, что использую секретный код FB вместо IG. Прежде чем пробовать другие решения, проверьте его еще раз.

Мы также испытываем ту же проблему со вчерашнего дня, похоже, очистка браузера (или нового окна инкогнито) делает свое дело. Хотя мобильное приложение, где мы проводим аутентификацию через мобильный браузер, работает нормально.

Я решил это, создав службу на стороне сервера / сервера, которая авторизовала пользователя.

Мой backend API - это приложение ruby ​​on rails. Вот фрагмент кода, чтобы понять.

  def token
    @response = Instagram.get_access_token(params[:code], redirect_uri: mobile_token_url)
    instagram_user = InstagramUserCreator.new(user_params)
    if instagram_user.find_or_create
      redirect_to "taddarmobileapp://?token=#{instagram_user.user.token}"
    else
      redirect_to 'taddarmobileapp://'
    end
  end

Я просто храню токен на телефоне и использую его для авторизации пользователя в своем бэкэнд-API.

РЕШИТЬ! Просто выйдите из Instagram и попробуйте снова. Это сработало для меня.

Другие вопросы по тегам