• 0
TEINGTEING

DUDA SOBRE LA DOCUMENTACION FLUJO SERVER SIDE

Question

Buen dia, soy principiante y tengo 2 webforms (ASP.NET)

WebForm1: Donde hago el redirect para la autorizacion del usuario y luego rederigir al WebForm2

WebForm2: Donde hago el GET del CODE y luego llamo a la funcion AUTHORIZE para intercambiar el CODE por el TOKEN

Documentacion: https://developers.mercadolibre.com.ar/es_ar/server-side

Las consultas son las siguientes sobre la documentacion del Flujo Server Side:

1) Punto a) 

https://auth.mercadolibre.com.ar/authorization?response_type=code&client_id=APP_ID&redirect_uri=REDIRECT_URL

¿El parametro "REDIRECT_URL" es "http://localhost:56108/WebForm2.aspx"?

 

2) Punto b)

GET
http://YOUR_REDIRECT_URI?code=SERVER_GENERATED_AUTHORIZATION_CODE

 2.1) ¿El parametro "YOUR_REDIRECT_URI" del GET es "http://localhost:56108/WebForm2.aspx"?

2.2) ¿"SERVER_GENERATED_AUTHORIZATION_CODE" es un parametro? ¿o se escribe literalmente así en el GET?

 

3) Punto c)

POST
https://api.mercadolibre.com/oauth/token?grant_type=authorization_code&client_id=APP_ID&client_secret=SECRET_KEY&code=SERVER_GENERATED_AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI

 ¿El parametro "REDIRECT_URI" del POST es "http://localhost:56108/WebForm2.aspx"?

 

Por ultimo, ¿es correcta la configuracion de la app?

20190115104430.jpg

 

20190115104608.jpg

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Encontré una solución en aquí en el foro pero no tengo a la mano quien es autor

Creas una tabla donde guardes tus accesos (estoy trabajando con magento 2) los que obtienes por primera vez  tu access_token y refresh_token en mi tabla solo guardo esos datos y tmb el appId, expiresId

$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();
    
    // Obtenemos datos de acceso ML
    $tableMDM = $resource->getTableName('vendor_datos_mercadolibre');
    $selectDatos = "SELECT * FROM " . $tableMDM;
    $datos = $connection->fetchAll($selectDatos);
    foreach ($datos as $row){
      $access = $row['accessToken'];
      $refresh = $row['refreshToken'];
    }
    
    //Datos de Acceso
    $appId = '2316';
    $secretKey = 'iKeAp';
    $redirectURI = 'https://example/admin/mercadolibre/action/publicar';
    $accessToken = $access;
    $refresh_token = $refresh;
    $siteId = 'MLM';
    
    //Conexion API ML
    $ml_session = $objectManager->create('\Vendor\MercadoLibre\Lib\Meli\Meli', ['client_id' => $appId, 'client_secret' => $secretKey, 'access_token' => $accessToken, 'refresh_token' => $refresh_token]);
    $refresh_tokn = $ml_session->refreshAccessToken();
    
    //Obtencion del nuevo token
    $new_token = $refresh_tokn['body']->access_token;
    $new_refresh_token = $refresh_tokn['body']->refresh_token;
    $new_expires_in = $refresh_tokn['body']->expires_in;
    
    //Guardamos Datos conexion ML
    $tableName = $resource->getTableName('vendor_datos_mercadolibre');
    $sql = "Update " . $tableName . " SET accessToken = '" .$new_token. "', refreshToken = '" .$new_refresh_token. "', expiresIn = " .$new_expires_in. " WHERE appID = '" . $appId . "'";
    $connection->query($sql);
    
    /* PRUEBA CONEXION
    $params = array();
    $url = '/sites/' . $siteId;
    $result = $ml_session->get($url, $params);
    */

En si lo que haces es un update cada que cambia el access_token (modifique el código para que funcionara en magento 2, el del autor original esta en PHP)

Espero y te sirva

saludos 😛

Share this post


Link to post
Share on other sites
  • 0

Creo que yo puse un codigo en php para hacer el refresh al token.

Y asi debe de ser, tienes que guardar esa informacion en tu base de datos y cada 5 horas obtener un nuevo token, esto lo haces por medio de un cronjob y asi ya no tienes que decirle a tu cliente que cada 5 horas actualice el token.

Saludos

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...