Этот документ обновлен.
Перевод (Русский) еще не готов.
Последнее обновление (английский): 23 сен 2021 г.

Получение маркеров доступа и разрешений

В этом руководстве объясняется, как использовать окно авторизации для получения краткосрочныхмаркеров доступа пользователей Instagram и разрешений у пользователей Instagram.

Шаг 1. Получение авторизации.

Окно авторизации позволяет пользователям предоставлять вашему приложению разрешения и краткосрочныемаркеры доступа пользователей Instagram. Когда пользователь выполнит вход и укажет, к каким данным он хочет предоставить приложению доступ, мы перенаправим его в приложение вместе с кодом авторизации, который можно обменять на краткосрочный маркер доступа.

Чтобы начать этот процесс, получите окно авторизации и покажите его пользователю:

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state}        //Optional

Параметры строки запроса

Все параметры, кроме state, являются обязательными.

ПараметрПример значенияОписание

client_id
Обязательный
Числовая строка

990602627938098

ID приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display.

redirect_uri
Обязательный
Строка

https://socialsizzle.herokuapp.com/auth/

URI, на который мы будем перенаправлять пользователя, после того как он примет или отклонит запрос разрешения. Должен полностью совпадать с одним из базовых URI в списке допустимых URI oAuth. Обратите внимание: в Панели приложений к URI может добавляться косая черта. Рекомендуем проверять список на наличие лишних знаков.

response_type
Обязательный
Строка

code

Установите для этого параметра значение code.

scope
Обязательный
Список значений, разделенных запятыми или пробелами

user_profile,user_media

Список разрешений, запрашиваемых у пользователя приложения. Список может быть разделен запятыми или пробелами (для URL-кодированного списка). user_profile — обязательный параметр.

state
Строка

1

Необязательное значение, которое указывает состояние сервера. Например, можно использовать его для защиты от CSRF (межсайтовой подделки запросов). Этот параметр и его значение будут переданы при обратном перенаправлении пользователя к вам.

Пример URL окна авторизации

https://api.instagram.com/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

Успешная авторизация

Если авторизация прошла успешно, мы перенаправим пользователя на страницу redirect_uri и передадим вам код авторизации в строковом параметре code запроса. Приложение сможет обменять этот код на краткосрочный маркер доступа пользователя Instagram.

Код авторизации действует в течение одного часа. Его можно использовать только один раз.

Пример перенаправления после успешной аутентификации

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

Обратите внимание: в конце URI перенаправления стоят символы #_, но в код они не входят, поэтому их нужно удалить.

Отмена авторизации

Если пользователь отменяет процесс авторизации, он перенаправляется на redirect_uri с указанием следующих параметров ошибки. Вы должны правильно обработать такую отмену и показать пользователям соответствующее сообщение.

ПараметрЗначение

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

Пример перенаправления после отмены авторизации

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

Шаг 2. Обмен кода на маркер.

Получив код, обменяйте его на краткосрочный маркер доступа, отправив запрос POST на следующую конечную точку:

POST https://api.instagram.com/oauth/access_token

Параметры тела

Включите в тело запроса POST следующие параметры.

ПараметрПример значенияОписание

client_id
Обязательный
Числовая строка

990602627938098

ID приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display.

client_secret
Обязательный
Строка

a1b2C3D4

Секрет приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display.

code
Обязательный
Строка

AQBx-hBsH3...

Код авторизации, переданный в параметре code при перенаправлении пользователя на адрес redirect_uri.

grant_type
Обязательный
Строка

authorization_code

Установите для этого параметра значение authorization_code.

redirect_uri
Обязательный
Строка

https://socialsizzle. heroku.com/auth/

URI перенаправления, переданный вами при перенаправлении пользователя на наше окно авторизации. URI должны совпадать, иначе запрос будет отклонен.

Пример запроса

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=990602627938098 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQBx-hBsH3...

Пример ответа на успешный запрос

В случае успеха API возвращает полезные данные в формате JSON с краткосрочным маркером доступа пользователя приложения и ID пользователя.

{
  "access_token": "IGQVJ...",
  "user_id": 17841405793187218
}

Сохраните значение access_token. Это краткосрочный маркер доступа пользователя Instagram, который приложение может использовать для доступа к конечным точкам API Basic Display Instagram.

Пример ответа на отклоненный запрос

Если запрос был по какой-то причине сочтен неправильным, API возвращает ошибку.

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