• 0
Sign in to follow this  
ronaldoguedess

Problem with 'Refresh_Token" and "Access_token" after two days without updating

Question

Hello friends, I have a big problem on my system ... 
 
as you know, six hours of 6 in the data is expired, simply access the page again that they are updated right? so far so it's all ok. 
 
the problem is that if it takes longer than two days go on the page, I get an error when I enter, the system can not take the data "access_token" and "refresh_token" to refresh the data logged in the system and maintain ... 
Is that some kind of problem meli? or witch my code?

 

 
<?
  session_start();

 if (!isset($_SESSION)) {
  session_name(md5('seg'.$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']));
 }
 
 //Verifica se o usuário está logado
 if($_SESSION['loguserrml'] == "ok"){
 
 
// Definindo o caminho do arquivo
  $server = $_SERVER['SERVER_NAME']; 
  $endereco = $_SERVER ['REQUEST_URI'];

// Inserindo conexao
  require 'conectar.php';

// Estanciando e requerindo MELI
  require 'meli.php';
  $meli = new Meli('xxx', 'xxxx', $_SESSION['access_token'], $_SESSION['refresh_token']);
  
   $iduserr = $_SESSION['iduserml'];
  $lconsulta = mysql_fetch_array(mysql_query("SELECT * FROM  usuariosimcopy WHERE id = '$iduserr' "));
?>

Essa é a parte que atualiza:

<?

  // Solicitando token ao banco de dados
  $token = mysql_query("SELECT * FROM token WHERE code='$iduserr' ");
  $token_row = mysql_fetch_assoc($token);

  // Agora vamos criar as sessões
  if($token_row['refresh_token'] != NULL){
  //echo "já tem no bd, fica logado";
  // Criando sessão com os dados do Banco de dados
  $_SESSION['access_token'] = $token_row['access_token'];
  $_SESSION['expires_in'] = $token_row['expires_in'];
  $_SESSION['refresh_token'] = $token_row['refresh_token'];
  
  
  	
      // Atualizando o prazo da sessão
      if($_SESSION['expires_in'] < time()) {
	      try {
			// O Faça o Andamento da atualização
			$refresh = $meli->refreshAccessToken();
			// Agora vamos criar as sessões com os novos parâmetros
			$_SESSION['access_token'] = $refresh['body']->access_token;
			$_SESSION['expires_in'] = time() + $refresh['body']->expires_in;
			$_SESSION['refresh_token'] = $refresh['body']->refresh_token;
			$_SESSION['testtime'] = time();			
			
			// Atualizando no banco de dados
			echo "Atualizou a Sessão! deu certo! (Atualiza Dados)<br><br>";
			$atualizar = mysql_query("UPDATE token SET expires_in='$_SESSION[expires_in]', refresh_token='$_SESSION[refresh_token]', access_token='$_SESSION[access_token]' WHERE code='$iduserr' ");
			echo "<strong>Expires In:</strong> $_SESSION[expires_in] <br><strong>Refresh Token:</strong> $_SESSION[refresh_token] <br><strong>Access Token:</strong> $_SESSION[access_token] <br> $_SESSION[testtime]<br><br><br><br>";
	      } catch (Exception $e) {
		  	echo "Exception: ",  $e->getMessage(), "\n";
	      }
     }
 
 
 if ($_SESSION[access_token] == "" and $_SESSION[refresh_token] == ""){
	echo "<br>Isso! faz logout! (Atualizou e ficou em branco)<br><br>";
 
 } 
 

...  to bee

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0
Now just used the (print_r) to see WHAT returns when updating the session. 
look:
print_r ($ meli);

Meli Object ( [client_id:protected] => XXXXXXXXX[client_secret:protected] => XXXXXXXXXXXXXXXXXXXXXXXX [redirect_uri:protected] => [access_token:protected] => [refresh_token:protected] => )

_______________________________________________________________

Expires In:
 1412696735 
Refresh Token: 
Access Token: 

 

_______________________________________________________________

 

Downloaded a file (meli.php) unmodified, and the problem continues! 
can anyone help me?

Share this post


Link to post
Share on other sites
  • 0

O que você colocou em vermelho não é para mostrar mesmo, e você tem isto guardado.

Se expirou o access_token use o refresh_token, se está indicando que o refresh_token já foi usado pode ter ocorrido falha na gravação ou mesmo que há mais alguém usando seus dados (!).

O meu script de autenticação leva em consideração a necessidade de reautenticação e um novo token(acces and refresh), acontece quando tudo dá errado ou mesmo o ML faz alguma coisa nos servidores. Mas uma vez que eu tenho algum dos dados nunca mais me autentico.

São 3 passos:

1) buscar o primeiro access_token, através do passo com o authorize e response_type=code

2) refresh_token

3) autorização de uso normal

 

Curta muito

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