2016-05-09 3 views
0

Я новичок в Python и начинаю играть, чтобы получить доступ к различным API, и теперь я получил API Dropbox. Но я получаю доступ «invalid_grant», когда пытаюсь получить доступ к своей учетной записи.dropbox.rest.ErrorResponse: [400] 'invalid_grant'

import dropbox 
app_key = 'AAAA' 
app_secret = 'BBBB' 

flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret) 
authorize_url = flow.start() 

print ('1. Go to: ' + authorize_url) 
print ('2. Click "Allow" (you might have to log in first)') 
print ('3. Copy the authorization code.') 
code = 'CCCC' 

access_token, user_id = flow.finish(code) 

Когда я запустил этот скрипт, я получил следующий вывод.

Traceback (самый последний вызов последнего): Файл "PATH/dropboxdownload.py", строка 14, в access_token, user_id = flow.finish (код) Файл «PATH \ Python35-32 \ Lib \ site-packages \ dropbox-2.2.0-py3.5.egg \ dropbox \ client.py ", строка 1398, в конце return self._finish (код, нет) Файл" PATH \ Python35-32 \ lib \ site -packages \ dropbox-2.2.0-py3.5.egg \ dropbox \ client.py ", строка 1265, в _finish response = self.rest_client.POST (url, params = params) Файл" PATH \ Python35-32 \ lib \ site-packages \ dropbox-2.2.0-py3.5.egg \ dropbox \ rest.py ", строка 316, в POST return cls.IMPL.POST (* n, ** kw) Файл «PATH \ Python35-32 \ lib \ site-packages \ dropbox-2.2.0-py3.5.egg \ dropbox \ rest.py», строка 254, в POST post_params = params, headers = headers, raw_response = raw_response) Файл «PATH \ Python35-32 \ lib \ site-packages \ dropbox-2.2.0-py3.5.egg \ dropbox \ rest.py», строка 227, в запросе raise ErrorResponse (r, r.read()) dropbox.rest.ErrorResponse: [400] 'invalid_grant' Процесс закончил с кодом выхода 1

+0

Я предполагаю, что AAAA, BBBB и CCCC не являются реальными значениями, но вы на самом деле жестко кодируете значение для кода? Это действительно должно быть ценностью, которую пользователь получает с веб-сайта. Если у вас уже есть * токен доступа *, который вы хотите использовать, просто пропустите весь этот код и назначьте ему «access_token» и перейдите к нему. – smarx

+0

Привет, Это правильно, AAAA, BBBB и CCCC - это поддельные значения, когда я публиковал код в Интернете. Но на самом деле это всего лишь тестовый скрипт, когда я, наконец, получил запрос, я думаю, что могу действительно делать то, что хочу. Но, чтобы дать вам дополнительную информацию, я попытаюсь создать файл в Dropbox, и я хочу загрузить его один раз в день и загрузить его в свой скрипт Tweppy Python, чтобы я мог легко добавлять новые хэш-теги и он будет автоматически обновлять мой фильтр Tweppy. –

+0

Я нашел проблему со сценарием, но это не решило мою проблему. Теперь я могу получить информацию о моей учетной записи, но мне нужно назначить новый код авторизации каждый раз, когда я запускаю скрипт Python. Мне нужен способ, которым я могу загрузить этот файл один раз в день без необходимости входа в Dropbox и получения нового кода авторизации. Thanks Christian –

ответ

0

Я решил эту проблему, и моя проблема, что маркер был истекли.

вы можете попытаться получить сообщение об ошибке подробно с использованием следующих кодов

try : 
    access_token,user_id = flow.finish(code) 
except dropbox.rest.ErrorResponse as err: 
    print("this"+str(err.body)) 

Если ошибка маркера истек, то вам необходимо перейти по ссылке с authorise_url, а затем получить новый маркер.

0

Если эта ошибка продолжает использовать следующую ссылку:

https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id=**your ID** 

Убедитесь, чтобы добавить идентификатор параметра client_id.

Смежные вопросы