• 0
Sign in to follow this  
FedeS

Problema con Auth en PHP (necesidad de autenticar constantemente)

Question

Buen día,

 

recientemente me puse a trabajar con la API de MercadoLibre en mi propio sitio web, pude usarlo correctamente... hacer get/put/etc..

El problema es que cada vez que utilizo la API tengo que autenticar constantemente, por lo que no termino de entender como usar el access_token para que dure 6 horas (segun dice en los docs).

 

El codigo que tengo es el siguiente:

require_once "lib/Meli/meli.php";

$meli = new Meli('xxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxxx');

$mlitem = $_GET['ml'];

if (isset($_GET['code'])) {

            $user = $meli->authorize($mlcode, 'xxxxxxxxxxxxxxxxxxxxxxxxxxx/publicar.php?ml='.$mlitem);

            $_SESSION['access_token'] = $user['body']->access_token;
            $_SESSION['expires_in'] = $user['body']->expires_in;
            $_SESSION['refresh_token'] = $user['body']->refresh_token;

            if($_SESSION['expires_in'] + time() + 1 < time()) {
                try {
                    echo "<b>Token Expirado</b><br /><br />";
                    print_r($meli->refreshAccessToken());
                } catch (Exception $e) {
                    echo "Exception: ",  $e->getMessage(), "\n";
                }
            }

$modifyitem = $mlitem;

            $modifyfields = array(
                "price" => 10
            );
            
            echo '<pre>';
            print_r($meli->put('/items/'.$modifyitem, $modifyfields, array('access_token' => $_SESSION['access_token'])));
            echo '</pre>';

} else {

           redirect($meli->getAuthUrl('xxxxxxxxxxxxxxxxxxxxxx/publicar.php?ml='.$mlitem, Meli::$AUTH_URL['MLA']));

}

Al principio al no tener un CODE va directo al else con el redirect, lo que me da un CODE y luego funciona perfectamente, me guardo ese CODE y luego lo vuelvo a usar en el $_GET, pero se ve que el access_token no me dura ni 5 minutos y tengo que volver a entrar al else con el redirect, a lo que me devuelve el mismo CODE, pero supongo que diferente access_token porque vuelve a funcionar. Por lo tanto mi consulta es la siguiente: de que manera puedo usar la API sin tener que recurrir a un CODE nuevo todo el tiempo, tengo que guardar el access_token? como debo usarlo sin pasar por el CODE?

Gracias

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Você só precisará pegar este CODE uma vez, a partir daí usará o refresh_token para pegar outro token a cada 6 horas.

Então, apos pegar o primeiro access_token armazene todos os dados e vá usando, quando falhar ou passar de 6hs você usa o refresh_token, ou a função refresh_token().

 

Só usará o CODE novamente se alguma coisa estranha invalidar o refresh_token e access_token.

Share this post


Link to post
Share on other sites
  • 0

Hola Youngling! Me podes decir como hiciste? tengo el mismo problema pero no entiendo bien y tampoco encuentro la documentación, tengo el access_token, el refresh_token y el code, tengo todos esos datos, pero no se como hacer para que no me lo pida cada 6hs, me podrás enseñar?

 

Muchas Gracias!!!!

Share this post


Link to post
Share on other sites
  • 0

Hola Youngling! Me podes decir como hiciste? tengo el mismo problema pero no entiendo bien y tampoco encuentro la documentación, tengo el access_token, el refresh_token y el code, tengo todos esos datos, pero no se como hacer para que no me lo pida cada 6hs, me podrás enseñar?

 

Muchas Gracias!!!!

 

está tudo na documentação, leia ela novamente, leia também artigos na internet sobre o oAuth 2.0

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
Sign in to follow this