2016-03-28 3 views
0

Я пытаюсь получить доступ к Google Диску клиента, чтобы загрузить их файлы. При тестировании кода на моем собственном диске Google я могу успешно загружать файлы. Тем не менее, когда я получаю код OAuth из них, я получаю ошибку:Ошибка invalid_grant при аутентификации oauth Request - Google Drive

oauth2client.client.FlowExchangeError: invalid_grant 

После глядя на некоторые другие ответы, было высказано предположение, что вы обеспечиваете access_type = «отсутствует», который, кажется, по умолчанию, и я могу видеть в сгенерированном URL-адресе, что этот параметр установлен. Это также похоже на то, что код, который они дают, может быть действителен только в течение часа, однако я попытался использовать его в течение часа и все равно не повезло. Любые другие предложения о том, как избежать этой проблемы?

Вот код, я был запущен:

from oauth2client import client 
import webbrowser 

flow = client.flow_from_clientsecrets(
    'client_secrets.json', 
    scope='https://www.googleapis.com/auth/drive.readonly', 
    redirect_uri='urn:ietf:wg:oauth:2.0:oob') 

auth_uri = flow.step1_get_authorize_url() 
webbrowser.open(auth_uri) 

print auth_uri 

auth_code = raw_input('Enter the auth code: ') 

credentials = flow.step2_exchange(auth_code) 
http_auth = credentials.authorize(httplib2.Http()) 

Она ошибка на flow.step2_exchange линии.

ответ

0

Существует три стандартных причины этой ошибки, о которых я знаю.

  1. Время на вашем ПК. Решение: проверьте его.
  2. Вы пытаетесь использовать код аутентификации более одного раза. Один раз вы можете использовать код аутентификации, чтобы получить токен обновления.
  3. Вы тестируете и проверяете код более чем один раз. Каждый раз, когда вы аутентифицируете код, вы получаете действительный токен обновления. Вы можете получить до 25 обновленных токенов, а затем перестать работать. Решение: убедитесь, что каждый раз, когда вы обновляете доступ, используете этот токен обновления, а не старый.

Также google как учебник Python, в котором показано, как получить доступ к диску с помощью библиотеки клиентов Python, это может облегчить вам работу. Python QuickStart

+0

Большое спасибо за помощь. Кажется, что токен действителен, если я использую его в течение 15 минут после доступа пользователя. Я проверил время на своем ПК, и он синхронизирован с NTP. Я не использую токен более одного раза, и я использую только один. Я не уверен, почему ограничение времени, похоже, влияет на токен, но на данный момент моя проблема решена (я просто должен убедиться, что вы используете токен быстро). Если у вас есть другие мысли о том, почему это так, как мне кажется, мне было бы интересно их услышать! – user1253952

+0

Какой токен вы говорите? Если его код аутентификации да, вы должны использовать это как можно скорее, и получить токен доступа и обновить токен. Его не собираются долго болтаться. – DaImTo

+0

Спасибо! Да, код аутентификации. Не понимал, что существует ограничение по времени. Вы знаете, как долго это происходит? Это затруднило попытку координировать работу с кем-то еще, чтобы получить код. – user1253952

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