Существует определенная проблема с потоком Instagram OAuth. Похоже, что возвращаемый код авторизации работает по какой-то причине, это, скорее всего, проблема, связанная с сетью, которую они должны исправить с их конца.
Моя теория заключается в том, что сгенерированный код авторизации не распространяется на все серверы API Instagram, и если вы попали в плохой узел, вам не повезло.
Однако я недавно нашел решение, которое не зависит от кода авторизации. Если вы используете аутентификацию на стороне клиента, вы сможете получить токен доступа, не используя код авторизации. Он менее безопасен, но отлично работает как временное исправление.
Вы просто меняете response_type=code
на response_type=token
. Тип маркера ответ перенаправит пользователя на ваш сайт, используя этот URL структуру:
http://your-redirect-uri#access_token=ACCESS-TOKEN
Я рекомендую извлечения маркера доступа из URL на стороне клиента с помощью JavaScript, а затем передать его в конечную точку на своем сайте. Например. /callback?accesstoken={accessToken}
. Это необходимо, потому что содержимое хэша не передается серверу.
Пример:
<script>
if (window.location.hash && window.location.hash.indexOf('#access_token=') !== -1) {
var accessToken = window.location.hash.replace('#access_token=', '');
window.location.href = '/callback?accesstoken=' + accessToken;
}
</script>
Выше фрагмент кода копируется и слегка модифицированный из раствора при https://news.ycombinator.com/item?id=13178789
Вы можете прочитать больше о Instagram стороне клиента аутентификации на https://www.instagram.com/developer/authentication/ под Client-Side (Implicit) Authentication
Это не работа для меня. Отключить неявный OAuth никогда не проверялся, но спасибо за ваше предложение. – dsum27
Это может быть правдой в некоторых случаях, но я думаю, что @raRaRa находится на правильном пути, описывая сыпь недавних инцидентов, которые возникли спонтанно. – robbpriestley