para - Cómo obtener un token de acceso a Instagram
instagram developer register (12)
Al usar https://www.hurl.it/ pude ver esto: {"code": 400, "error_type": "OAuthException", "error_message": "El código coincidente no se encontró o ya se usó". }
Entonces, debe obtener un nuevo código para cada solicitud.
Realmente estoy luchando por la forma en que debo obtener mi token de acceso para Instagram,
He registrado un nuevo cliente y luego he usado esta URL
para completar la identificación de los clientes y redirigir la URL.
Luego fui redireccionado a una página donde mostraba un código en la URL, pero desde allí no tengo ni idea de dónde encontrar mi identificador de acceso.
Casi todas las respuestas que las personas han publicado hasta ahora solo cubren cómo manejar los tokens de acceso en la interfaz, siguiendo el procedimiento de "autenticación implícita" del lado del cliente de Instagram. Este método es menos seguro y no recomendado de acuerdo con los documentos API de Instagram.
Suponiendo que está utilizando un servidor, los documentos de Instagram fallan al proporcionar una respuesta clara sobre el intercambio de un código para un token, ya que solo dan un ejemplo de una solicitud de CURL. Básicamente, debe realizar una solicitud POST a su servidor con el código provisto y toda la información de su aplicación, y devolverá un objeto de usuario, incluida la información del usuario y el token.
No sé en qué idioma estás escribiendo, pero lo resolví en Node.js con el módulo de solicitud npm que puedes encontrar here .
Analicé la URL y usé esta información para enviar la solicitud posterior
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))
}
}
);
Por supuesto, reemplace las cosas de configAuth con su propia información. Probablemente no estés utilizando Node.js, pero es de esperar que esta solución te ayude a traducir tu propia solución al idioma en el que la estés utilizando.
Deshabilita oauth implícita bajo la autenticación de seguridad y ENTONCES carga esto:
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Especifique el URI de REDIRECT en su cuenta y escríbalo exactamente como se especificó.
El enlace a la documentación oficial de la API es http://instagram.com/developer/authentication/
Longstory corto - dos pasos:
Obtener el CÓDIGO
Abra https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code con información de http://instagram.com/developer/clients/manage/
Obtener token de acceso
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
El token de acceso se devuelve como un fragmento de URI después de que autoriza a la aplicación a usar sus datos de Instagram. Debería verse algo como lo siguiente:
Esto funcionó bien para mí:
jelled.com/instagram/access-token
FYI, lo usé en combinación con el plugin jQuery Instagram que encontrarás aquí; http://potomak.github.com/jquery-instagram
La API de Instagram está pensada no solo para ti, sino también para que cualquier usuario de Instagram se autentique con tu aplicación. Seguí las instrucciones en el sitio web de Instagram Dev . Usando el primer método (explícito), pude hacer esto bastante fácilmente en el servidor.
Paso 1) Agregue un enlace o botón a su página web en el que un usuario pueda hacer clic para iniciar el proceso de autenticación:
<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
y YOUR_REDIRECT_URI
se le entregarán después de que registre exitosamente su aplicación en el backend de Instagram, junto con YOUR_CLIENT_SECRET
usa a continuación.
Paso 2) En el URI que definió para su aplicación, que es lo mismo que YOUR_REDIRECT_URI
, debe aceptar la respuesta del servidor de Instagram. El servidor de Instagram le devolverá una variable de code
en la solicitud. Luego debe usar este code
y otra información sobre su aplicación para realizar otra solicitud directamente desde su servidor para obtener access_token
. Hice esto en python usando el framework Django, de la siguiente manera:
Dirija django a la función de response
en 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''),
]
Aquí está la función de response
, manejando la solicitud, 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'')
Esta es solo una forma, pero el proceso debería ser casi idéntico en PHP o en cualquier otro lenguaje del lado del servidor.
Prueba esto:
dmolsen.com/2013/04/05/generating-access-tokens-for-instagram
después de obtener el código, puedes hacer algo como:
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
Si no quiere construir su lado del servidor, como solo desarrollarlo desde el lado del cliente (aplicación web o una aplicación móvil), puede elegir una Autenticación implícita .
Como dice el documento, primero haga una solicitud https con
Complete su CLIENT-ID y REDIRECT-URL que designó.
Luego irá a la página de inicio de sesión, pero lo más importante es cómo obtener el token de acceso una vez que el usuario inicie sesión correctamente.
Después de que el usuario haga clic en el botón de inicio de sesión con la cuenta correcta y la contraseña, la página web se redireccionará a la url que usted designó, seguida de un nuevo token de acceso.
No estoy familiarizado con JavaScript, pero en Android Studio, es una manera fácil de agregar un oyente que escucha el evento en el que la página web anula la url a la nueva URL (evento de redirección), luego pasa la cadena de URL de redirección a usted, entonces puede dividirlo fácilmente para obtener el token de acceso como:
String access_token = url.split ("=") [1];
Significa romper la url en la matriz de cadenas en cada carácter "=", entonces el token de acceso obviamente existe en [1].
Tengo el mismo problema antes, pero cambio la URL en este
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
ve a administrar la página de clinet en:
http://www.instagram.com/developer/
establecer una URL de redireccionamiento
entonces :
usa este código para obtener el token de acceso:
<!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>