Основная цель: получить access_token, чтобы я мог отображать свой канал Instagram на веб-сайте.
В настоящее время, чтобы получить токен доступа, мы переходим по этому URL-адресу и нажимаем «Авторизовать», чтобы получить код, в дальнейшем обменяемый на access_token.
https://api.instagram.com/oauth/authorize? client_id = {app-id} & redirect_uri = {redirect-uri} & scope = user_profile, user_media & response_type = code
Теперь, если я пишу сценарий PHP-curl для отправки этого access_token и получения моих сообщений, как я буду каждый раз получать токен доступа , Я не могу нажимать на авторизацию каждый раз, когда мой API запрашивает данные, кроме того, нажатие авторизации каждые 60 дней также не является для меня долгосрочным решением.
Так что я надеялся, что есть способ (чтобы я мог вызвать этот URL и получить код авторизации напрямую?)
Итак, мой скрипт:
$ authURL = "https://api.instagram.com/oauth/authorize?client_id=$client_id&redirect_uri=$redirect_uri&scope=user_profile,user_media&response_type=code";//STEP 1, GET КОД АВТОРИЗАЦИИ (я застрял здесь, как получить код только с PHP,//без внешних кликов ..)//https://www.redirecturl.com?code=AQgw#_$authorization_code = '48FduaX0g ... ..VZIj ';//ШАГ 2 ДАЙТЕ КОД ДЛЯ ТОКЕНА $ url =' https://api.instagram.com/oauth/access_token';$myjson = "{'client_id': $ client_id, 'client_secret': $ client_secret, 'grant_type': 'authorization_code', 'redirect_uri': $ redirect_uri, 'code': $ authorization_code} "; $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_POST , TRUE); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ myjson); $ result = curl_exec ($ ch); curl_close ($ ch); $ insta_details = json_decode ($ result); echo $ insta_details ['access_token']; curl - X GET 'https://graph.instagram.com/17841405793187218/media? Access_token = IGQVJ ...'
Этап авторизации требует вмешательства человека для войдите под логином/паролем. Таким образом, невозможно сделать это только с помощью PHP.
Но если вам просто нужно отобразить канал на веб-сайте с помощью PHP, вы можете использовать этот пакет: https://packagist.org/ packages/espresso-dev/instagram-basic-display-php
Возьмите код
в обратном вызове после аутентификации:
$ code = $ _GET ['code'];
А затем используйте следующие методы:
-
getOAuthToken ()
для получения начального токена -
getLongLivedToken ()
для получения долгоживущего токена, действительного в течение 60 дней
Сохраните долгоживущий токен, чтобы его можно было использовать для получения сообщений, и просто вызывайте метод refreshToken ()
каждые 50 дней или около того для обновления токен в фоновом режиме и обновите токен, который вы используете.