«invalid_scope» при попытке получить токен доступа oauth2 - PullRequest
0 голосов
/ 15 сентября 2018

Я слежу за документами на https://developers.google.com/photos/library/guides/authentication-authorization, и считаю, что приведенный ниже код довольно близок к правильному ...

import requests

# from https://developers.google.com/identity/protocols/OAuth2ForDevices#step-1-request-device-and-user-codes
def get_token(client_id="661666866149-42r2bldb8karc5bv5vltj0suis2fm4up.apps.googleusercontent.com"):
    response = requests.post(
        'https://accounts.google.com/o/oauth2/device/code',
        data={
            'client_id': client_id,
            'scope': 'https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata https://www.googleapis.com/auth/photoslibrary.sharing'
        })
    print(response.text)
    return response

Вышеперечисленное продолжает работать с

{ "error": "invalid_scope" } <Response [400]>

Однако, если я изменю значение scope на email, это сработает.Я получил указанное выше значение из документации Google, поэтому я не знаю, что еще можно там разместить.

1 Ответ

0 голосов
/ 17 сентября 2018

Похоже, что вы следуете руководству для OAuth 2.0 для приложений телевизоров и устройств с ограниченным вводом для авторизации пользовательских областей OAuth на телевизоре или аналогичном устройстве.

Как указано на этой странице, этот поток поддерживает только ограниченный набор областей . К сожалению, в настоящее время эта область не включает в себя области действия API библиотеки Google Photos .

В системе отслеживания проблем открыт запрос на добавление поддержки для этого потока OAuth: https://issuetracker.google.com/113342106 (Вы можете "пометить" проблему, чтобы получать уведомления о любых обновлениях.)

(Если в вашем потоке задействованы мобильное устройство и серверный компонент, вы можете выполнить нечто подобное с помощью входа в Google путем обмена учетными данными пользователя между вашим сервером и службами Google . Вы можете предложить пользователям чтобы авторизовать область в вашем приложении, и после обмена токенами с вашим сервером выполняйте вызовы API таким образом. Вам придется самостоятельно обрабатывать связь между телевизором / устройством с ограниченным вводом и вашим приложением.)

...