Подтвердить что ты не робот

Как получить токен доступа к Instagram

Я действительно борюсь за то, как я должен получить свой токен доступа для Instagram,

Я зарегистрировал нового клиента, а затем использовал этот URL

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

для заполнения идентификатора клиентов и перенаправления Url.

Затем я был перенаправлен на страницу, где он отображал код в Url, но оттуда у меня нет подсказки, где id затем получает мой токен доступа.

4b9b3361

Ответ 1

Ссылка на официальную документацию API http://instagram.com/developer/authentication/

Shortstory short - два шага:

Получить CODE

Откройте https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code с информацией из http://instagram.com/developer/clients/manage/

Получить токен доступа

curl \-F 'client_id=CLIENT-ID' \
    -F 'client_secret=CLIENT-SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=YOUR-REDIRECT-URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token

Ответ 3

Почти все ответы, опубликованные пользователями, охватывают только то, как обрабатывать токены доступа на передней панели, следуя процедуре "неявной аутентификации" на стороне клиента. Этот метод менее безопасен и не рекомендуется в соответствии с документами API Instagram.

Предполагая, что вы используете сервер, документы Instagram docs вызывают сбои в предоставлении четкого ответа об обмене кодом для токена, поскольку они дают только пример запроса cURL. По существу, вы должны сделать запрос POST на свой сервер с предоставленным кодом и всей информацией о вашем приложении, и они вернут объект пользователя, включая информацию пользователя и токен.

Я не знаю, на каком языке вы пишете, но я решил это в Node.js с модулем запроса npm, который вы можете найти здесь.

Я проанализировал URL-адрес и использовал эту информацию для отправки запроса на отправку

var code = req.url.split('code=')[1];

request.post(
  { form: { client_id: configAuth.instagramAuth.clientID,
            client_secret: configAuth.instagramAuth.clientSecret,
            grant_type: 'authorization_code',
            redirect_uri: configAuth.instagramAuth.callbackURL,
            code: code
          },
    url: 'https://api.instagram.com/oauth/access_token'
  },
  function (err, response, body) {
    if (err) {
      console.log("error in Post", err)
    }else{
      console.log(JSON.parse(body))
    }
  }
);

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

Ответ 5

API Instagram предназначен не только для вас, но и для любого пользователя Instagram, который потенциально может проходить аутентификацию в вашем приложении. Я следовал инструкциям на веб-сайте Instagram Dev. Используя первый (явный) метод, я смог довольно легко сделать это на сервере.

Шаг 1) Добавьте ссылку или кнопку на свою веб-страницу, по которой пользователь мог щелкнуть, чтобы начать процесс аутентификации:

<a href="https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code">Get Started</a>

YOUR_CLIENT_ID и YOUR_REDIRECT_URI будут предоставлены вам после успешной регистрации приложения в бэкэнде Instagram вместе с YOUR_CLIENT_SECRET, использованным ниже.

Шаг 2) На URI, который вы определили для своего приложения и который совпадает с YOUR_REDIRECT_URI, вы должны принять ответ от сервера Instagram. Сервер Instagram вернет вам переменную code в запросе. Затем вам нужно использовать эту code и другую информацию о вашем приложении, чтобы сделать еще один запрос непосредственно с вашего сервера для получения access_token. Я сделал это в Python, используя Django Framework, следующим образом:

направьте django в функцию response в urls.py:

from django.conf.urls import url

from . import views

app_name = 'main'
urlpatterns = [
        url(r'^$', views.index, name='index'),
        url(r'^response/', views.response, name='response'),
]

Вот функция response, обрабатывающая запрос, views.py:

from django.shortcuts import render
import urllib
import urllib2
import json

def response(request):
    if 'code' in request.GET:
        url = 'https://api.instagram.com/oauth/access_token'
        values = {
            'client_id':'YOUR_CLIENT_ID',
            'client_secret':'YOUR_CLIENT_SECRET',
            'redirect_uri':'YOUR_REDIRECT_URI',
            'code':request.GET.get('code'),
            'grant_type':'authorization_code'
        }
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        response_string = response.read()
        insta_data = json.loads(response_string)
        if 'access_token' in insta_data and 'user' in insta_data:
            #authentication success
            return render(request, 'main/response.html')
        else:
            #authentication failure after step 2
            return render(request, 'main/auth_error.html')
    elif 'error' in req.GET:
        #authentication failure after step 1
        return render(request, 'main/auth_error.html')

Это только один из способов, но этот процесс должен быть практически идентичен в PHP или любом другом серверном языке.

Ответ 6

Простой способ, который работает в 2019 году

Отключите неявный oauth под аутентификацией безопасности и ПОТОМ загрузите это:

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

Укажите REDIRECT-URI в своей учетной записи и введите его точно так, как указано.

Ответ 7

Маркер доступа возвращается как фрагмент URI после авторизации приложения для использования данных Instagram. Он должен выглядеть примерно так: enter image description here

Ответ 8

Попробуйте следующее:

http://dmolsen.com/2013/04/05/generating-access-tokens-for-instagram/

после получения кода вы можете сделать что-то вроде:

curl -F 'client_id=[your_client_id]' -F 'client_secret=[your_secret_key]' -F 'grant_type=authorization_code' -F 'redirect_uri=[redirect_url]' -F 'code=[code]' https://api.instagram.com/oauth/access_token

Ответ 9

100% работает с этим кодом

<a id="button" class="instagram-token-button" href="https://api.instagram.com/oauth/authorize/?client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&response_type=code">Click here to get your Instagram Access Token and User ID</a>
<?PHP
  if (isset($_GET['code'])) {

        $code = $_GET['code'];

        $client_id='< YOUR CLIENT ID >';
        $redirect_uri='< YOUR REDIRECT URL >';
        $client_secret='< YOUR CLIENT SECRET >';
        $url='https://api.instagram.com/oauth/access_token';

        $request_fields = array(
            'client_id' => $client_id,
            'client_secret' => $client_secret,
            'grant_type' => 'authorization_code',
            'redirect_uri' => $redirect_uri,
            'code' => $code
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        $request_fields = http_build_query($request_fields);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request_fields);
        $results = curl_exec($ch); 
        $results = json_decode($results,true);
        $access_token = $results['access_token'];

        echo $access_token;

        exit();
    }

?>

Ответ 10

Если вы ищете инструкции, ознакомьтесь с этой статьей post. И если вы используете С# ASP.NET, посмотрите на это repo.

Ответ 12

Используя https://www.hurl.it/, я смог увидеть это: { "код": 400, "error_type": "OAuthException", "error_message": "Код соответствия не найден или уже использовался". }

так: вы должны получить новый код для каждого запроса.

Ответ 13

Если вы не хотите создавать серверную часть, например, только на стороне клиента (веб-приложение или мобильное приложение), вы можете выбрать Неявная аутентификация.

Как говорится в документе, сначала сделайте запрос https с

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

Заполните идентификатор CLIENT-ID и REDIRECT-URL.

Затем это происходит на странице журнала, но самое главное как получить токен доступа после правильного входа пользователя.

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

http://your-redirect-uri#access_token=ACCESS-TOKEN

Я не знаком с javascript, но в студии Android, что простой способ добавить слушателя , который прослушивает событие, веб-страницу переопределяет URL-адрес новому URL-адресу (событие перенаправления), то он передаст вам строку перенаправления url, так что вы можете легко разбить ее, чтобы получить токен доступа, например:

String access_token = url.split( "=" ) [1];

Средство разбить URL-адрес в строчном массиве в каждом символе "=", тогда токен доступа, очевидно, существует в [1].

Ответ 14

перейти к управлению страницей клиники в:

http://www.instagram.com/developer/

установить URL-адрес перенаправления

тогда:

используйте этот код для доступа к токену:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>tst</title>
<script src="../jq.js"></script>
<script type="text/javascript">
       $.ajax({
            type: 'GET',
            url: 'https://api.instagram.com/oauth/authorize/?client_id=CLIENT-‌​ID&redirect_uri=REDI‌RECT-URI&response_ty‌pe=code'
            dataType: 'jsonp'}).done(function(response){
                var access = window.location.hash.substring(14);
                //you have access token in access var   
            });
</script>
</head>
<body>  
</body>
</html>