Как получить токен в инстаграм (access_token)

1 декабря, 2018 12:55
Admin
19 июня, 2022 9:00

Для того, чтобы можно было отображать актуальные фотографии из instagram и другую информацию на вашем сайте или в вашем приложении, можно воспользоваться api instagram, который позволит нам получать необходимые данные, после чего мы сможем отображать их в нужном формате. В данной статье мы поговорим о том, как получить access_token, с помощью которого мы сможем получить json данные от instagram, после чего, используя ваш любимый язык программирования их можно будет отобразить в вашем проекте. О том, как осуществлять парсинг фото из инстаграм можно прочитать в статье: Парсинг фото из инстаграм.

Регистрируем свое приложение

Прежде чем мы сможем получить access_token, нам потребуется зарегистрировать свое приложение на странице https://www.instagram.com /developer/register/ (естественно, предварительно потребуется выполнить вход в свой инстаграм аккаунт).

Вводим название вашего сайта, номер телефона, заполняем, что мы хотим сделать с помощью api instagram, принимаем политику использования и нажимаем кнопку sing up (рис.1).

Рис.1 instagram-page

После чего, нам необходимо нажать Manage Clients и зарегистрировать нового клиента (Register a New Client). Заполняем все необходимые поля на появившейся странице (рис.2), здесь нам потребуется запомнить наш Valid redirect URIs, который мы будем использовать далее и нажимаем кнопку зарегистрировать.

Рис.2 instagram-client

Затем, мы получим наш Client ID и Client Secret, которые нам потребуются для получения access_token.

Как получить access_token?

Процесс получения access_token полностью описан на следующей странице https://www.instagram.com /developer/authentication/ и состоит из нескольких шагов.

Получение access_token на стороне сервера

Если вы получаете токен на стороне сервера, убедитесь, что в настройках ранее созданного вами клиента стоит галочка во вкладке Security напротив пункта Disable implicit Oauth.

Шаг первый: отправляем URL авторизации

С помощью ранее полученного нами Client ID нам необходимо перейти по-следующему URL:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
  • здесь, CLIENT-ID — это наш полученный ранее Client ID,
  • redirect_uri — заполненный нами ранее Valid redirect URIs.

Шаг второй: получаем редирект от инстаграм

Перейдя по-указанному URL, на появившейся странице нажимаем кнопку Authorize, после чего инстаграм перенаправит нас на наш redirect_uri, отправив дополнительно в GET параметре наш code (данный code копируем в адресной строке браузера и запоминаем).

Шаг третий: запрос на получение access_token

На данном шаге у нас уже имеются все необходимые данные для того, чтобы отправить POST запрос для получения токена. Для этого мы можем воспользоваться утилитой curl, выполнив следующую команду на нашем сервере:

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
  • здесь, client_id — наш полученный ранее Client ID,
  • client_secret — наш полученный ранее Client Secret,
  • redirect_uri — заполненный нами ранее Valid redirect URIs,
  • code — code полученный нами на шаге 2.

Если мы все выполнили верно, то в ответ на наш запрос мы получим json с нашим заветным access_token, а также информацию об аккаунте.

Получение access_token на стороне клиента

Чтобы получить access_token на стороне клиента, в настройках нашего созданного клиента (имеется в виду клиент, который создается на странице Manage Clients), во вкладке Security необходимо установить галочку напротив пункта Enforce signed requests. Данный метод получения токена отличается от получения токена на стороне сервера тем, что при каждом запросе на получение данных от инстаграм, потребуется передавать параметр sig, который необходимо предварительно получить, как написано на странице https://www.instagram.com /developer/secure-api-requests/. То есть, если генерировать токен на стороне сервера, запрос на получение данных будет примерно следующим:

https://api.instagram.com/v1/users/self/?access_token=ACCESS-TOKEN
А если генерировать токен на стороне клиента, запрос на получение тех же данных будет выглядеть так:
https://api.instagram.com/v1/users/self/?access_token=ACCESS-TOKEN&sig=you_sig

при условии, что в настройках стоит галочка напротив Enforce signed requests.

Шаг первый: отправляем URL авторизации

С помощью ранее полученного нами Client ID нам необходимо перейти по-следующему URL:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

Шаг второй: получаем редирект от инстаграм

Перейдя по-указанному URL, на появившейся странице нажимаем кнопку Authorize, после чего инстаграм перенаправит нас на наш redirect_uri, отправив дополнительно в адресной строке браузера наш access_token.

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

Сохраните ваш полученный токен в надежном месте во избежание возможного взлома вашего аккаунта.