Как получить токен доступа к Instagram
Я действительно борюсь за то, как я должен получить свой токен доступа для Instagram,
Я зарегистрировал нового клиента, а затем использовал этот URL
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
для заполнения идентификатора клиентов и перенаправления Url.
Затем я был перенаправлен на страницу, где он отображал код в Url, но оттуда у меня нет подсказки, где id затем получает мой токен доступа.
Ответы
Ответ 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
Ответ 2
Действительно поздний ответ, но я должен был сделать это еще недавно, поэтому создал учебник (готовый, когда мне нужно это сделать снова)
см. http://bobmckay.com/web/simple-tutorial-for-getting-an-instagram-clientid-and-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, но, надеюсь, это решение поможет вам перевести свое решение на любой язык, на котором вы его используете.
Ответ 4
У меня была такая же проблема, но я изменяю URL-адрес в этом файле
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Ответ 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.
Ответ 11
Это сработало для меня отлично:
http://jelled.com/instagram/access-token
FYI, я использовал его в сочетании с плагином jQuery Instagram, который вы найдете здесь;
http://potomak.github.com/jquery-instagram
Ответ 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=REDIRECT-URI&response_type=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>