• 0
FELINTONETWORK.COM

Offline-Access is not allowed - Error

Question

Fiz um pequeno código usando o SDK do Python do Mercado Livre porém não estou conseguindo renovar o token. Alguém pode me orientar do que estou fazendo errado ?

Recebo o erro: Offline-Access is not allowed.

(venv) D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre>python auth.py
Traceback (most recent call last):
  File "auth.py", line 5, in <module>
    from ml.meli import Meli
  File "D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre\ml\meli.py", line 82
    raise Exception, "Offline-Access is not allowed."
                   ^
SyntaxError: invalid syntax
 

Código:

import json
import sys

sys.path.append('ml')
from ml.meli import Meli

with open('auth.json') as file_object:
    auth_data = json.load(file_object)

def renovarAuth():
    meli = Meli(client_id=auth_data['client_app_id'],
                client_secret=auth_data['client_app_secret_key'],
                access_token=auth_data['client_app_access_token'],
                refresh_token=auth_data['client_app_refresh_token']
                )
    body = {}
    response = meli.post("/oauth/token", body, {'access_token': meli.access_token})
    print(response.content)


renovarAuth()

PS: Testei diversas vezes o acesso aos dados do arquivo JSON e da biblioteca Meli do Mercado Livre. O acesso está funcionando perfeitamente.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
On 12/25/2019 at 12:17 AM, FELINTONETWORK.COM said:

Fiz um pequeno código usando o SDK do Python do Mercado Livre porém não estou conseguindo renovar o token. Alguém pode me orientar do que estou fazendo errado ?

Recebo o erro: Offline-Access is not allowed.

(venv) D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre>python auth.py
Traceback (most recent call last):
  File "auth.py", line 5, in <module>
    from ml.meli import Meli
  File "D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre\ml\meli.py", line 82
    raise Exception, "Offline-Access is not allowed."
                   ^
SyntaxError: invalid syntax
 

Código:


import json
import sys

sys.path.append('ml')
from ml.meli import Meli

with open('auth.json') as file_object:
    auth_data = json.load(file_object)

def renovarAuth():
    meli = Meli(client_id=auth_data['client_app_id'],
                client_secret=auth_data['client_app_secret_key'],
                access_token=auth_data['client_app_access_token'],
                refresh_token=auth_data['client_app_refresh_token']
                )
    body = {}
    response = meli.post("/oauth/token", body, {'access_token': meli.access_token})
    print(response.content)


renovarAuth()

PS: Testei diversas vezes o acesso aos dados do arquivo JSON e da biblioteca Meli do Mercado Livre. O acesso está funcionando perfeitamente.

Tu deu permissão de acesso offline ao app ?

Share this post


Link to post
Share on other sites
  • 0
On 12/29/2019 at 12:09 AM, FELINTONETWORK.COM said:

Onde posso verificar isso ?

https://developers.mercadolivre.com.br/devcenter/home

Edita a aplicação , confirma que vai aparecer as permissões

14 hours ago, FELINTONETWORK.COM said:

Já reli várias vezes. Reler pela centésima vez não vai ajudar muito...

 

O @mldev te disse e isso não foi a toa

 

https://developers.mercadolivre.com.br/pt_br/registre-o-seu-aplicativo#Escopos

Acesso off-line: permite realizar uma solicitação do servidor e do token de atualização.

Quando a gente vai fazer coisa com o dinheiro dos outros (até mesmo com o seu) tu deve ser criterioso e deve ler tudo do início ao fim

Share this post


Link to post
Share on other sites
  • 0

Grato pela ajuda.

Eu só não entendo qual é a necessidade desses ataques, sendo que coloquei todos os dados necessários referente ao que tentei e ao processo que foi utilizado.

Não tenho obrigação de acertar tudo de primeira, por isso o fórum.

Vou colocar todo o processo que estou seguindo e se tiver alguma alma caridosa que já deve ter cometido algum erro no processo de autenticação, agradeço.

Quote

 

Processo de obtenção do Access Token e Refresh Token:

1. Primeiro eu preciso obter o "CODE" (Muito parecido com o refresh token)
http://auth.mercadolibre.com.ar/authorization?response_type=code&client_id=$APP_ID&redirect_uri=$YOUR_URL

2. Depois preciso gerar o access token
https://api.mercadolibre.com/oauth/token?grant_type=authorization_code&client_id=$APP_ID&client_secret=$APP_SECRET&code=$code&redirect_uri=$redirect_url

3.Renovar o access token antes do prazo de 6 horas

https://api.mercadolibre.com/oauth/token?grant_type=refresh_token&client_id=$APP_ID&client_secret=$APP_SECRET&refresh_token=$code

 

Segue o código completo do script python usando o Python SDK:

import json
import sys

sys.path.append('ml')
from ml.meli import Meli

with open('auth.json') as file_object:
    auth_data = json.load(file_object)

def renovarAuth():
    meli = Meli(client_id=auth_data['client_app_id'],
                client_secret=auth_data['client_app_secret_key'],
                access_token=auth_data['client_app_access_token'],
                refresh_token=auth_data['client_app_refresh_token']
                )
    body = {}
    response = meli.post("/oauth/token", body, {'access_token': meli.access_token})
    print(response.content)


renovarAuth()

E o erro que estou obtendo:

D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre>python auth.py
Traceback (most recent call last):
File "auth.py", line 5, in <module>
from ml.meli import Meli
File "D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre\ml\meli.py", line 82
raise Exception, "Offline-Access is not allowed."
^
SyntaxError: invalid syntax

Arquivo "auth.json":

{
  "client_app_id": "xxx",
  "client_app_secret_key": "xxx",
  "client_app_access_token": "xxx",
  "client_app_refresh_token": "xxx"
}

(Dados foram mascarados por questões de segurança)

Minha maior dificuldade é que na parte de "exemplos" do Python SDK não encontrei nenhum exemplo de renovação ou autenticação. Talvez se alguém possa me guiar por esse caminho me ajudaria muito. Obrigado.

Edited by FELINTONETWORK.COM

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, FELINTONETWORK.COM said:

Grato pela ajuda.

Eu só não entendo qual é a necessidade desses ataques, sendo que coloquei todos os dados necessários referente ao que tentei e ao processo que foi utilizado.

Não tenho obrigação de acertar tudo de primeira, por isso o fórum.

Vou colocar todo o processo que estou seguindo e se tiver alguma alma caridosa que já deve ter cometido algum erro no processo de autenticação, agradeço.

Segue o código completo do script python usando o Python SDK:


Informação pouco relevante para o problema

 

Minha maior dificuldade é que na parte de "exemplos" do Python SDK não encontrei nenhum exemplo de renovação ou autenticação. Talvez se alguém possa me guiar por esse caminho me ajudaria muito. Obrigado.

 

A razão é que eu ja tinha te dito na primeira resposta qual é  o problema, não parece ter nada a ver com programação . Na configuração do seu app acesso offline esta desmarcado.  "Offline-Access is not allowed."  É exatamente isso que diz o erro . Isso é citado na documentação

Quanto ao processo ele 100% oauth2 então qualquer exemplo oauth2 que tu achar na internet vai conseguir

 

import requests
url = "https://api.mercadolibre.com/oauth/token"
payload = 'client_id=XXXX&client_secret=YYYY&grant_type=client_credentials'
headers = {
  'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))

 

Esse o feijão com arroz do processo . Se isso não imprimir  o access token é erro de configuração no aplicativo

Share this post


Link to post
Share on other sites
  • 0
8 hours ago, gbandoni said:

A razão é que eu ja tinha te dito na primeira resposta qual é  o problema, não parece ter nada a ver com programação . Na configuração do seu app acesso offline esta desmarcado.  "Offline-Access is not allowed."  É exatamente isso que diz o erro . Isso é citado na documentação

Entendo!

Eu revi o processo de criação do app. Excluindo e criando um novo app na resposta anterior, porém para não restar dúvidas quanto à essa parte vou deixar o print aqui referente à criação do app. Creio que você esteja se referindo à isso.

Screenshot_121.png.ba492050e9eaf3ffc8d7cca4631c0566.png

8 hours ago, gbandoni said:

import requests url = "https://api.mercadolibre.com/oauth/token" payload = 'client_id=XXXX&client_secret=YYYY&grant_type=client_credentials' headers = { 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))

Gostaria de uma maneira de fazer o processo usando o Python SDK. Eu adaptei o código segundo o que vi na documentação porém mesmo assim não funcionou pelo motivo que descrevi no título deste tópico.

Este código eu poderia obter facilmente através do Postman, por exemplo, já que nele eu consigo exportar as configurações de acesso à API para as mais diversas linguagens de programação.

Edited by FELINTONETWORK.COM
shut up

Share this post


Link to post
Share on other sites
  • 0
On 12/25/2019 at 12:17 AM, FELINTONETWORK.COM said:

Fiz um pequeno código usando o SDK do Python do Mercado Livre porém não estou conseguindo renovar o token. Alguém pode me orientar do que estou fazendo errado ?

Recebo o erro: Offline-Access is not allowed.

(venv) D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre>python auth.py
Traceback (most recent call last):
  File "auth.py", line 5, in <module>
    from ml.meli import Meli
  File "D:\Dropbox\1 - Work\2020\January - March\Analytics - Mercado Livre\ml\meli.py", line 82
    raise Exception, "Offline-Access is not allowed."
                   ^
SyntaxError: invalid syntax
PS: Testei diversas vezes o acesso aos dados do arquivo JSON e da biblioteca Meli do Mercado Livre. O acesso está funcionando perfeitamente.

 

Ese es un error de SINTAXIS, no de ejecución. No tiene ninguna relación con los permisos de tu aplicación. El código está escrito para Python 2.X pero lo estás ejecutando con Python 3.X

El SDK oficial para Python es viejo y debería ser actualizado a Python 3, en unos meses más Python 2 dejará de estar soportado:
http://pyfound.blogspot.com/2019/12/python-2-sunset.html
Mientras tanto, instala Python 2.7.17 en otro directorio diferente (por ejemplo, C:\Python27) y ejecuta tu programa con:
c:\Python27\python.exe auth.py

 

Share this post


Link to post
Share on other sites
  • 0
On 1/4/2020 at 4:13 PM, FELINTONETWORK.COM said:

Desculpe a demora.

Funcionou!

 

Pelo visto os espertinhos aí quebraram a cara.

Grato pela ajuda!

Verdade quebrei a cara ,Estou até chorando aqui

Boa sorte ai

 

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