В этом руководстве объясняется, как использовать окно авторизации для получения краткосрочныхмаркеров доступа пользователей Instagram и разрешений у пользователей Instagram.
Окно авторизации позволяет пользователям предоставлять вашему приложению разрешения и краткосрочныемаркеры доступа пользователей 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
, являются обязательными.
Параметр | Пример значения | Описание |
---|---|---|
|
| ID приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display. |
|
| URI, на который мы будем перенаправлять пользователя, после того как он примет или отклонит запрос разрешения. Должен полностью совпадать с одним из базовых URI в списке допустимых URI oAuth. Обратите внимание: в Панели приложений к URI может добавляться косая черта. Рекомендуем проверять список на наличие лишних знаков. |
|
| Установите для этого параметра значение |
|
| Список разрешений, запрашиваемых у пользователя приложения. Список может быть разделен запятыми или пробелами (для URL-кодированного списка). |
|
| Необязательное значение, которое указывает состояние сервера. Например, можно использовать его для защиты от CSRF (межсайтовой подделки запросов). Этот параметр и его значение будут переданы при обратном перенаправлении пользователя к вам. |
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
с указанием следующих параметров ошибки. Вы должны правильно обработать такую отмену и показать пользователям соответствующее сообщение.
Параметр | Значение |
---|---|
|
|
|
|
|
|
https://socialsizzle.herokuapp.com/auth/?error=access_denied &error_reason=user_denied &error_description=The+user+denied+your+request
Получив код, обменяйте его на краткосрочный маркер доступа, отправив запрос POST
на следующую конечную точку:
POST https://api.instagram.com/oauth/access_token
Включите в тело запроса POST следующие параметры.
Параметр | Пример значения | Описание |
---|---|---|
|
| ID приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display. |
|
| Секрет приложения Instagram, который можно найти здесь: Панель приложений > Продукты > Instagram > Basic Display. |
|
| Код авторизации, переданный в параметре |
|
| Установите для этого параметра значение |
|
| 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" }