ruby on rails - google - La API de Oauth2 Instagram "URI de redireccionamiento no coincide con el URI de redireccionamiento registrado"
instagram login api (8)
Estoy trabajando en una aplicación de Rails que está en modo de desarrollo y puede registrarse con omniauth.
El anfitrión es
http://localhost:3000/
Estoy usando las gemas:
gem ''omniauth''
gem ''omniauth-foursquare''
gem ''omniauth-instagram''
Cuando me registro a través de omniauth con Foursquare no hay ningún problema. Todas las configuraciones son correctas y mi redirect_uri en la configuración del desarrollador de Foursquare equivale al host (localhost: 3000)
Sin embargo, si completé exactamente el mismo redirect_uri (localhost: 3000) en el administrador de clientes de Instagram *. Instagram me da esto:
{
"code": 400,
"error_type": "OAuthException",
"error_message": "Redirect URI does not match registered redirect URI"
}
Basado en esta URL:
https://instagram.com/oauth/authorize?response_type=code&client_id=<ID>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Finstagram%2Fcallback&state=18415adf24dd97873e61094f67c0fb7a94857fedf93e9d2e&scope=basic
*
¿Qué estoy haciendo mal de acuerdo con Instagram y cómo se debe arreglar esto?
... O puede seguir las instrucciones aquí:
https://instagram.com/developer/authentication/?hl=es
Consulte la sección "Paso uno: Dirija su usuario a nuestra URL de autorización".
Simplemente suministre su CLIENT_ID y REDIRECT_URI.
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
Cuando especifica un URI de redireccionamiento, http: // localhost: 3000 no es lo mismo que http: // localhost: 3000 / (observe la barra al final).
Asegúrese de que el URI de devolución de llamada coincida exactamente.
Necesitaba agregar
http://localhost:3000/users/auth/instagram/callback
como mi URI de devolución de llamada porque estoy usando Devise.
Para cualquiera que tenga este problema y que el URL de redirección proporcionado a instagram sea exactamente el mismo que el que estás usando, he descubierto que algunos usuarios escribían la dirección de mi sitio web como http://www.example.com/login
cuando estaba en mi API api era http://example.com/login
.
Luego creé un script php para detectar si la cadena www
existe en mi url y luego volver a cargarla en la misma página pero sin el www
.
if(strpos($_SERVER[''HTTP_HOST''], ''www.'') !== FALSE) {
header("Location: ".str_replace(''www.'', '''', $_SERVER[''HTTP_HOST''].''/''.$_SERVER[''REQUEST_URI'']));
}
Para el módulo Drupagram (Drupal 7) agregado: http://localhost:3000/instagram/oauth
como redirect_uri
Problema: el API de redireccionamiento de la API de Oauth2 "no coincide con el URI de redireccionamiento registrado
Mi solución: compruebe el archivo ng-cordova-oauth.js y compruebe la función de instagram en eso. Verifique que el valor de redirect_uri sea el mismo que el registro de su aplicación en la consola de desarrollador para Instagram. Si es el mismo funciona correctamente, de lo contrario, obtendrá el problema anterior.
Solucioné el problema yo mismo. Se agregó localhost:3000/auth/instagram/callback
como redirect_uri y funcionó bien.
{"error_type": "OAuthException", "code": 400, "error_message": "El URI de redirección no coincide con el URI de redireccionamiento registrado"}
Cómo obtener token de acceso de Instagram
El URL de tu sitio web debe ser el mismo al registrar sandbox clien api en instagram https://www.instagram.com/developer/
aquí usamos la URL del sitio web: https://adlivetech.com URI válidos de redirección: https://adlivetech.com/
Para el sitio web en vivo, puede obtener el token de acceso fácilmente usando https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Reemplazar la url anterior "CLIENT-ID" con su ID de cliente Reemplazar la URL anterior "REDIRECT-URI" url de redirección debe ser su nombre de dominio como: http://adlivetech.com