Экран согласия Google Cloud OAuth не отражает изменения объема (внутреннего) приложения - PullRequest
0 голосов
/ 25 мая 2020

Фон

Сначала я настроил свое приложение Google Cloud с полной областью действия Google Диска (../auth/drive) и проверил соединение с моей личной учетной записью (т. Е. Дал разрешение приложению). Я использую PyDrive FYI.

Впоследствии я удалил приложение из своей личной учетной записи ( Отключиться от диска ), удалил полную область на экране разрешения OAuth настройки и заменил его только областью ../auth/drive.file.

Затем я удалил учетные данные OAuth и воссоздал их (и повторно загрузил их на свой компьютер) на всякий случай.

Ожидаемое поведение

При представлении экрана OAuth теперь я ожидаю, что область действия отразит, что приложение будет иметь доступ только к файлам и папкам, которые оно создало само.

Фактическое поведение

Экран согласия OAuth по-прежнему сообщает мне, что приложение будет иметь доступ к всем файлам и папкам на моем Диске.

Код, который я использую для аутентификации

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

...

    gauth = GoogleAuth()

    gauth.LoadCredentialsFile("app_user_secrets.json")

    if gauth.credentials is None:
        gauth.GetFlow()
        gauth.flow.params.update({"access_type": "offline"})
        gauth.flow.params.update({"approval_prompt": "force"})
        gauth.LocalWebserverAuth()
    elif gauth.access_token_expired:
        gauth.Refresh()
    else:
        gauth.Authorize()

    gauth.SaveCredentialsFile("app_user_secrets.json")

    drive = GoogleDrive(gauth)

Есть идеи, почему это происходит или как я могу это обойти?

1 Ответ

0 голосов
/ 26 мая 2020

Оказывается, PyDrive устанавливает собственные области действия OAuth по умолчанию, если вы их не перезаписываете. По умолчанию это https://www.googleapis.com/auth/drive, как указано здесь: https://pythonhosted.org/PyDrive/oauth.html#automatic -and-custom-authentication-with-settings-yaml .

Я исправил и переопределил это, отредактировав свой поток аутентификации, включая следующая строка перед командой LocalWebserverAuth().

gauth.settings["oauth_scope"] = "https://www.googleapis.com/auth/drive.file"

Другой альтернативой было бы создание моего собственного файла settings.yaml, но я не хотел go идти по этому маршруту.

...