• 0
Eduardo

Offline-Access is not allowed

Question

Pessoal pelo amor de deus, que loucura é essa??? 

Ao tentar renovar o token de acesso com o meu refresh_token a API me retorna o seguinte:

array:2 [
  "error" => "Offline-Access is not allowed."
  "httpCode" => null
]

O app está configurado com o scope Offline-acess. Alguem tem alguma ideia do que possa ser?

Creio que isso começou a ocorrer depois que eu criei um segundo app em minha conta para o ambiente de homologação. Ou seja tenho dois apps um para o meu ambiente de desenvolvimento e outro para o de homologação. No ambiente de homologação esse problema não ocorre.

 

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 1
On 19/05/2017 at 11:23 AM, rodrigojob said:

isto pode ocorrer quando você não passa o seller_id

Correto @rodrigojob !

Para o refreshAccessToken(); funcionar a parametrização na instancia da meli deve ter os seguintes parâmetros: 

$meli = new Meli('APP_ID', 'SECRET_KEY', $_SESSION['access_token'], $_SESSION['refresh_token']);

Ajudará muitos que procuram no forum por esta mesma duvida.

Obrigado

Share this post


Link to post
Share on other sites
  • 0

Por favor já vasculhei o forum todo, se alguém já passou por isso, me ajudem, que servirá para muitos aqui no forum que passam por este mesmo problema.

Justamente no refreshAccessToken();

Já dei permissão offline access nas configurações do aplicativo e não resolve.

 

Tentei tambem: 

https://api.mercadolibre.com/oauth/token?grant_type=refresh_token&client_id=XXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&refresh_token=TG-XXXXXXeae4b0XXXXfe68c83f-XXXXXXX

Screenshot-at-2017-08-15-04-12-24.thumb.png.b4c15aff4eaf7ca31e0c5fee37a28708.png

 

Erro no código:     

	require 'meli.php';

	$appID = 'XXXXXXXXXXXXXXXX';
	$secretKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

	$meli = new Meli($appID, $secretKey);

	$refresh = $meli->refreshAccessToken();
	print_r($refresh);

RESULTADO: 

Array
(
    [error] => Offline-Access is not allowed.
    [httpCode] => 
)

 

E observei no arquivo meli.php que tem um trecho de if sem os { }, em if($request["body"]->refresh_token) . Ja testei e tambem não funcionou:

    public function refreshAccessToken() {

        if($this->refresh_token) {
             $body = array(
                "grant_type" => "refresh_token", 
                "client_id" => $this->client_id, 
                "client_secret" => $this->client_secret, 
                "refresh_token" => $this->refresh_token
            );

            $opts = array(
                CURLOPT_POST => true, 
                CURLOPT_POSTFIELDS => $body
            );
        
            $request = $this->execute(self::$OAUTH_URL, $opts);

            if($request["httpCode"] == 200) {             
                $this->access_token = $request["body"]->access_token;

                if($request["body"]->refresh_token)
                    $this->refresh_token = $request["body"]->refresh_token;

                return $request;

            } else {
                return $request;
            }   
        } else {
            $result = array(
                'error' => 'Offline-Access is not allowed.',
                'httpCode'  => null
            );
            return $result;
        }        
    }

Obrigado desde já.

Share this post


Link to post
Share on other sites
  • 0

Me diga apenas o ID do usuário que você está tentando renovar o token.

Sobre o seu comentário:

6 hours ago, Linkin Man said:

E observei no arquivo meli.php que tem um trecho de if sem os { }, em if($request["body"]->refresh_token) . Ja testei e tambem não funcionou:



 

Isso não é um erro. Quando você não coloca os { } o código interpretará apenas a primeira sentença após a condição.

Logo:

if ($x) echo 'foo';

é igual a

if ($x) { echo 'foo'; }

 

Abraços,
Wesley.

Share this post


Link to post
Share on other sites
  • 0

@Wesley Nascimento , primeiramente, obrigado.

Mas o grande mistério é o porque esta funcionalidade (refreshAccessToken();) não estar funcionando como evidenciei acima, nem pela url funciona.

No aguardo, obrigado.

Edited by Linkin Man

Share this post


Link to post
Share on other sites
  • 0
23 hours ago, Linkin Man said:

Correto @rodrigojob !

Para o refreshAccessToken(); funcionar a parametrização na instancia da meli deve ter os seguintes parâmetros: 


$meli = new Meli('APP_ID', 'SECRET_KEY', $_SESSION['access_token'], $_SESSION['refresh_token']);

Ajudará muitos que procuram no forum por esta mesma duvida.

Obrigado

os parâmetros necessários estão informados na documentação da API

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