La API de Instagram requiere que los uris de redireccionamiento tengan un certificado SSL (conexión HTTPS).

Uso la API de Instagram para mi aplicación móvil, y la respuesta de OAuth debería invocar primero el procedimiento en la aplicación.

Puedo crear un servidor para capturar esta llamada localmente (en 127.0.0.1), pero para el certificado, solo puedo crear uno autofirmado. El problema es que los navegadores no confían en él e inicialmente advierten al usuario sobre los peligros potenciales, lo cual es inaceptable para la experiencia del usuario.

Vi algunas preguntas similares en Stackoverflow, pero desafortunadamente, no podía entender si resolvían mi problema.

¿Cómo evitar esta advertencia?

0
Roman Shirokov 17 dic. 2019 a las 00:27

2 respuestas

La mejor respuesta

Tengo una solución para mi caso específico; Yo uso Flutter para la aplicación móvil. Pero, en general, también puede encontrar algo similar para otros casos.

Inicialmente, estaba lanzando la ventana de autorización de Instagram con el paquete url_launcher. Básicamente, para iOS lanza la url en la aplicación, pero en una vista web de Safari. De esta manera, no puedo controlar el flujo en esta vista web. Entonces, lo que quería hacer es tomar una solicitud a 127.0.0.1 cuando se completa la autorización ejecutando un servidor local en la aplicación. Funciona, pero arroja una advertencia sobre el riesgo de seguridad debido a un certificado autofirmado, ya que Instagram requiere el uso de https y 127.0.0.1 no puede tener un certificado de confianza.

En cambio, ahora lanzo la ventana de autorización de Instagram en la aplicación con WebView personalizado usando webview_flutter. Proporciona más flexibilidad, pero lo más importante es que puedo rastrear la navegación. Entonces, Instagram redirige a mi usuario a la página no existente en mi sitio web, que tiene un certificado de confianza (pero en realidad no importa), pero el WebView mencionado anteriormente puede detectar esta redirección, analizar la URL para recuperar el código deseado y evite la redirección real al cerrar esta vista web. Entonces, eventualmente, obtengo el código deseado en la aplicación, para poder enviarlo a mi backend con una referencia de identificación de usuario adicional.

Entonces, básicamente, el flujo de trabajo se ve así:

  1. El usuario hace clic en un botón en la aplicación para conectar la cuenta de Instagram;
  2. La aplicación inicia una vista web personalizada y abre la página de autorización de Instagram;
  3. Después de la autorización, Instagram redirige al usuario a una URL ficticia con el código deseado como parámetro de consulta;
  4. La vista web personalizada detecta esta redirección;
  5. Recupera el código de la URL;
  6. Cierra la vista web (vuelve a la pantalla principal de la aplicación).
0
Roman Shirokov 18 dic. 2019 a las 21:21

Básicamente, incluso si advierten sobre https, puede usar la API. Tuve el mismo problema, pero intenté ejecutar la aplicación en el puerto https en lugar de http en localhost y funcionó. Entonces, la respuesta es que solo necesita ejecutar su aplicación en https.

0
Nilesh Bhagate 17 dic. 2019 a las 10:36