• 0
oscar171

Autenticar de forma automatica

Question

Buenas, es posible autenticar a un usuario por URL de forma directa? si poseo los datos de usuario y contraseña de mercadolibre, hay alguna forma de obtener el ACCESS_TOKEN de forma directa pasando los datos del usuario? 

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0
1 hour ago, Angel Cantu said:

Si es posible, pero debes tener muy buenos skills de programación, uso de sockets y expresiones regulares.

Prácticamente debes hacer la autentificacion en la pagina web oficial (pero desde código), después consultar la URL de tu aplicación y aceptar los permisos.

Vaya, es el mismo procedimiento que harías manualmente, pero desde código.

Saludos !

Não é possível, a autorização da aplicação só pode ser feita pelo próprio usuário (por motivos obvios de segurança), assim como o desenvolvedor da aplicação NUNCA deve ter a senha do usuário do Mercado Livre (cliente)

Share this post


Link to post
Share on other sites
  • 0

no recomendamos que tengas el user y psw de los sellers a los que vas a ofrecer tu software sino que lo manejes mediante OAUTH2 http://developers.mercadolibre.com/es/autenticacion-y-autorizacion/ es mas escalable y te permite trabajar de manera desatendida, preguntate si le darías tu cuenta de facebook al developer de KandyCrush para que te habilite el juego? 

cualquier duda avísanos!

Saludos

 

Share this post


Link to post
Share on other sites
  • 0

 

 

Hola creo que existe una forma.

Crea un acces token y un refresh token por primera vez manualmente y guardalos en tu base de datos.

 

Crea un cronjob en tu servidor personal que ejecute un script que:

1 - Jala de tu base de datos el refresh token

2 - Haz refresh el acces token con el SDK de mercadolibre de tu prefrencia para server side (yo use php)

3 - El SDK te va a devolver una respuesta donde en el body se encuentran tu nuevo acces token y refresh token

4 - Actualiza en tu base de datos el nuevo refresh token y el nuevo acces token, y elimina los viejos.

Mas o menos asi deberia de estar tu base de datos

Datos del inicio
----------------------------------------
id_usuario  |   token    |  refresh_token
----------------------------------------
123456789  |  xxxxxxx1  |   yyyyyyy1

Datos ya actualizados al ejecutar el script
----------------------------------------
id_usuario  |   token    |  refresh_token
----------------------------------------
123456789  |  xxxxxxx2  |   yyyyyyy2

Ya que lo hayas probado creas un cronjob en tu servidor, por ejemplo yo lo ejecuto cada 5 horas

0 */5 * * * php -q /var/www/html/actualizar.php

Ahora en tus scripts en lugar de hacer todo el show de login o hacerle refresh al token, solo jalas de tu base de datos el acces token y llamas al SDK de meli con tu token que tienes guardada.

Este es un ejemplo con el que probe todo lo anterior, usando PHP y PostGreSQL:

config.php



// Basic data from de app
 $appId = 'tuID';
 $secretKey = 'tuSECRET';
 $redirectURI = 'tuRedirect';
 $siteId = 'MLX';
 
//DB Connection
 $db_handle = pg_connect('host=XXX' 'port=YYYYY' 'dbname=RRRRR' 'user=MMMMMM' 'password=BBBBBB');
 
 $db_query = "SELECT token, refresh_token FROM tutabla WHERE id_usuario = '123456789'";
 $db_result = pg_query($db_query);
 $db_myrow = pg_fetch_assoc($db_result);
    //Get tokens
    $token = $db_myrow[token];
    $refresh_token = $db_myrow[refresh_token];

 

update.php



//Call the SKD and the config file
require 'ml.php';
require 'config.php';

$meli = new Meli($appId, $secretKey, $token, $refresh_token);
    
$refresh = $meli->refreshAccessToken();

$new_token = $refresh['body']->access_token;
$new_refresh_token = $refresh['body']->refresh_token;

$refresh_query = pg_query("UPDATE tutabla SET refresh_token ='".$new_refresh_token."',token ='".$new_token."' WHERE id_usuario = '123456789'");

 

prueba_facil.php

Mira que facil queda un script cuando guardas los tokens en tu base de datos, es un ejemplo super basico ya tu puedes agregarle mil cosas de seguridad extra.

//Script para obtener datos de mis clientes
//Call the SKD and the config file
require 'ml.php';
require 'config.php';

$meli = new Meli($appId, $secretKey, $token, $refresh_token);

    $params = array();
    $result = $ml_session->get('orders/search/recent?seller=123456789&access_token='.$token, $params);
    
    foreach($result['body']->results as $mydata)
        {
        echo $mydata->buyer->id .",".  $mydata->buyer->phone->number .",". 
                $mydata->buyer->email .",". $mydata->buyer->nickname .",". 
                $mydata->buyer->first_name ." ". $mydata->buyer->last_name ."<br>";
        }

De esta manera ya puedo crear una app que al momento en que me llegue una notificacion, con los datos de la notificacion automaticamente obtener los datos de un pago y guardarlos en mi base de datos, o los datos de una orden, o muchas cosas automatizadas puedes lograr, por ejemplo sincronizar el stock de tu tienda en woocommerce con el de mercadolibre o visceversa, tambien puedes hacer que al momento de realizar una compra en mercadolibre, quitar stock en tu woocommerce.

Y con este metodo siempre tendras un acces token activo para ti o tu cliente, que podra estar actualizando cosas automaticamente.

La verdad a mi no me "caia el 20" y hasta que por fin se me ilumino la mente, lo probe, y funciono y ahora se me abrio aun mas la mente con todo lo que puedo lograr de ahora en adelante. 

Espero te haya ayudado, para que no veas que todos te vamos a responder que leas la documentacion de la api o simplemente un "no" jajajaja

 

 

 

Edited by Fernando Aguirre

Share this post


Link to post
Share on other sites
  • -2

Si es posible, pero debes tener muy buenos skills de programación, uso de sockets y expresiones regulares.

Prácticamente debes hacer la autentificacion en la pagina web oficial (pero desde código), después consultar la URL de tu aplicación y aceptar los permisos.

Vaya, es el mismo procedimiento que harías manualmente, pero desde código.

Saludos !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now