Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the insta-gallery domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the post-smtp domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the woocommerce domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the translatepress-multilingual domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131

Notice: La función _load_textdomain_just_in_time fue llamada de forma incorrecta. La carga de la traducción para el dominio astra se activó demasiado pronto. Esto suele ser un indicador de que algún código del plugin o tema se ejecuta demasiado pronto. Las traducciones deberían cargarse en la acción init o más tarde. Visitá Depuración en WordPress para más información. (Este mensaje se agregó en la versión 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6131
Abrir los enlaces de nuestras redes en el navegador predeterminado – Adue

Abrir los enlaces de nuestras redes en el navegador predeterminado

Hace unas semanas me encontré con que un cliente tenía en su perfil de Instagram, un link a su sitio web, en donde había un formulario que pedía la carga de un archivo.

Como se habrán dado cuenta, tanto Instagram como otras redes sociales, abren estas URLs dentro de la misma aplicación y no, por ejemplo, en el Chrome o Safari.

El inconveniente es que por problemas de seguridad, algunas redes no permiten la carga de archivos desde su misma aplicación, por lo que necesitábamos que cuando el usuario haga click sobre el link, este se abra directamente en el navegador del dispositivo.

¿Cómo resolvimos este problema?

Investigando un poco me encontré con este post que sortea nuestro mismo inconveniente de una forma muy divertida.

Si analizamos el User-Agent del browser de instagram (datos de identificación del dispositivo y aplicación que está ingresando a la web) nos podemos encontrar con algo como lo siguiente

Mozilla/5.0 (Linux; Android 6.0.1; SM-J700F Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.112 Mobile Safari/537.36 Instagram 110.0.0.16.119 Android (23/6.0.1; 320dpi; 720x1280; samsung; SM-J700F; j7elte; samsungexynos7580; en_US; 171727780)

De esta manera, nuestro sitio web se entera que la persona que lo visita lo hace a través de la aplicación de Instagram, entonces necsitamos decirle que no siga la navegación desde esa aplicación, sino que lo haga desde el Chrome o Safari, y para lograr eso podemos devolver una respuesta que Instagram no entienda, o no pueda procesar, y de esta manera se “fuerce” a abrirse en el navegador predeterminado.

Implementando una DummyBytes API

La DummyBytes API funciona de una manera muy sencilla, si el usuario viene a través de la aplicación se devuelve como respuesta un conjunto de bytes aleatorios en formato de archivo, y es esto lo que obliga a que se abra en el navegador predeterminado.

Su implementación en PHP puede hacerse de la siguiente manera

<?php
    $userAgent = $_SERVER['HTTP_USER_AGENT']; // Obtenemos el valor del User-Agent
    if (strpos($userAgent, 'Instagram')) { // Corroboramos que provenga desde Instagram
        header('Content-type: application/pdf');
        header('Content-Disposition: inline; filename=dummybytes');
        header('Content-Transfer-Encoding: binary');
        header('Accept-Ranges: bytes');
        @readfile($file); //Devolvemos bytes aleatorios en forma de archivo
    }

¡Y listo! Deberíamos asegurarnos de que cada petición se pueda filtrar a través de la API y nos aseguramos de que siempre se abra en nuestro navegador.

#LoHacemosAdue

es_ARSpanish