Instagram New API - как получить код авторизации, используя чисто PHP код - PullRequest
0 голосов
/ 30 января 2020

Основная цель: чтобы получить access_token, чтобы я мог отобразить свой канал Instagram на веб-сайте.

В настоящее время, чтобы получить токен доступа, мы go добавляем этот 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 THE AUTHORIZATION CODE (i am stuck here, how to get code from only PHP, 
//without external clicks..)
//https://www.redirecturl.com?code=AQgw#_

$authorization_code = '48FduaX0g.....VZIj';

//STEP 2 GIVE THE CODE FOR TOKEN

$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...'

1 Ответ

1 голос
/ 30 января 2020

Шаг авторизации требует взаимодействия с человеком для входа в систему с именем пользователя / паролем. Таким образом, нет способа сделать это только с помощью PHP.

Но если вам просто нужно отобразить фид на веб-сайте, используя PHP, вы можете использовать этот пакет: https://packagist.org/packages/espresso-dev/instagram-basic-display-php

Получите code в обратном вызове после аутентификации:

$code = $_GET['code'];

И затем используйте следующие методы:

  • getOAuthToken() чтобы получить начальный токен
  • getLongLivedToken(), чтобы получить долгоживущий токен, действительный в течение 60 дней

Сохранить долгоживущий токен, чтобы его можно было использовать для извлечения сообщений и просто вызывайте метод refreshToken() каждые 50 дней или около того, чтобы обновить sh токен в фоновом режиме и обновить используемый токен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...