Аутентификация с помощью OAuth для Instagram без всплывающего окна

Я пытаюсь использовать OAuth для Instagram для аутентификации, планируя использовать PHP и cURL. Первым шагом является получение «кода», например:

fd7d5f6cde6c47e4a86ba28b22ac4583

Я работал с Twitter API раньше, и он работает аналогичным образом. Я обмениваю код на access_token и тогда я могу подтвердить подлинность.

Проблема в том, что способ аутентификации — нажать кнопку в окне с надписью «Я даю разрешение». Вот это окно:

введите описание изображения здесь

Мой вопрос: есть ли способ сделать это, не требуя нажатия на этот URL?

Например, есть ли способ для меня автоматизировать этот процесс с помощью моего сценария? Когда я работал с Twitter, я мог использовать cURL, чтобы перейти по этой ссылке и пройти аутентификацию, чтобы затем получить этот код.

Это часть проекта, который будет использовать только я по сути, чтобы получить мои последние инстаграм. Я не хочу, чтобы посетителям моего сайта приходилось нажимать кнопку «авторизовать» каждый раз, когда они появляются.

На данный момент я просто делаю это, могу ли я что-то добавить к URL для автоматической авторизации?

$auth_request_url = 'https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';
/* Send user to authorisation */
header("Location: ".$auth_request_url);

Ниже приведен пример кода это работает но только один раз:

$url = "https://api.instagram.com/oauth/access_token";
$access_token_parameters = array(
'client_id'                =>     $client_id,
'client_secret'            =>     $client_secret,
'grant_type'               =>     'authorization_code',
'redirect_uri'             =>     $redirect_url,
'code'                     =>     $code
);

$curl = curl_init($url);    // we init curl by passing the url
curl_setopt($curl,CURLOPT_POST,true);   // to send a POST request
curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters);   // indicate the data to send
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   // to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   // to stop cURL from verifying the peer's certificate.
$result = curl_exec($curl);   // to perform the curl session
curl_close($curl);   // to close the curl session

$arr = json_decode($result,true);

Я получил $code с конца URL вручную. Но это истекает после одного использования. Так что мне нужно решить, как запустить и получить $code каждый раз, когда я хочу выполнить скрипт.

0

Решение

Утверждение требуется только в первый раз, когда ваш клиент запрашивает его у пользователя, и избежать этого невозможно. Вы получаете информацию от конечного пользователя, и было бы огромной дырой в безопасности, если бы клиенты могли получать эту информацию или разрешения от пользователей, не требуя их явного одобрения хотя бы один раз. Но после первого раза, согласие должно быть сохранено и повторно использовано для вашего клиента.

4

Другие решения

Я знаю, что это доброе старое, но я думаю:

После https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';

он будет перенаправлен на ваш $redirect_url/?code=XXXXXXXXXXXXX

Таким образом, вы можете получить код по $code = $_GET['code']

2

По вопросам рекламы [email protected]