Ошибка кодирования при попытке получить список файлов из Google Drive Api v3 - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь научиться программировать веб-приложение, которое запрашивает Google Drive Api.Мой веб-сайт в Python-Flask.Большинство деталей успешно пройдено, но я застрял здесь:

@app.route('/analyze')
def analyze():
    if 'credentials' not in session:
        return redirect('authorize')
    credentials = google.oauth2.credentials.Credentials(session['credentials'])

drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
    files = drive_service.files().list().execute()

Учетные данные загружаются из сеанса (пользователь проходит процедуру авторизации на другой странице / в скрипте).По этому сценарию мы восстанавливаем сеанс и выполняем вызов в API Google:

Но вызов drive.files().list().execute() не удается

Ошибка в ответе API и выглядит следующим образом:

ValueError: {'client_id': 'heregoesclientid', 'client_secret': 'thisisclientsecret', 'refresh_token': 'xxxxxxxxxxxxxxxxxx', 'scopes': ['https://www.googleapis.com/auth/drive'],' token ':'xxxxxxxxxxxxxxxxxxxxxxxx', 'token_uri': 'https://oauth2.googleapis.com/token'} не удалось преобразовать в Unicode

Почему ответ не может быть преобразован в Unicode?Это ошибка в Google API?Могу ли я что-нибудь сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 30 мая 2019

Если вы используете пакет google-auth, вам нужно передать значения в Credentials индивидуально, вместо dict: См. Здесь .

Ваш код может выглядеть так:

    sc = session['credentials']
    credentials = google.oauth2.credentials.Credentials(
        token=sc.get('token'),
        client_id=sc.get('client_id'),
        ...etc

    )

Надеюсь, это поможет, или дайте мне знать, если вы не используете google-auth, так как это будет неактуально.

...