【问题标题】:Accessing a users google drive访问用户的谷歌驱动器
【发布时间】:2019-10-12 17:34:36
【问题描述】:

我有一个 django 网站,它使用Django allauth 让用户使用他们的谷歌帐户登录并授予他们谷歌驱动器的权限。登录后,django-allauth 会为该用户保存一个令牌。这部分一切正常。

我现在如何访问用户的 google 驱动器(已授予权限)以列出可用文件?大概这需要使用感谢django-allauth保存的令牌。

我已经安装了python google api client,但我正在努力弄清楚如何使用用户的令牌来列出他们的谷歌驱动器的内容。

有一个烧瓶示例here,我正在尝试修改它以用于使用django-allauth 的django 项目。登录流程正常工作,但django-allauth 并不能确保请求谷歌驱动器访问。我已经尝试按照this 更新我的设置:

SOCIALACCOUNT_PROVIDERS = {
    "google": {
        "SCOPE": [
            "https://www.googleapis.com/auth/drive.metadata.readonly",
            "https://www.googleapis.com/auth/userinfo.profile",
        ],
        "AUTH_PARAMS": {"access_type": "offline"},
    }
}

【问题讨论】:

    标签: python django google-api django-allauth google-api-python-client


    【解决方案1】:

    没有发布任何答案,所以我只是发布我结束做的事情。看起来django-allauth 不能同时用于常规 google 身份验证和 api 身份验证。

    因此,目前用户首先必须使用由django-allauth 处理的 Google 帐户登录网站。然后,一旦他们登录,他们就可以选择授予对他们的谷歌驱动器的访问权限,然后启动一个新的身份验证流程(使用Google python api client

    【讨论】:

    • 嘿@darkpool,你碰巧从你想出的东西中得到任何指导吗?我觉得谷歌关于apiv3的身份验证和基本功能(共享、授予权限等)的文档在这方面非常少……
    【解决方案2】:

    对于正在阅读本文的任何人,当前版本的 allauth 确实支持 API 身份验证。

    对于不在 allauth 中的默认列表中的范围,您需要在 SCOPE 列表中提供完整的 URL(例如 https://www.googleapis.com/auth/drive),而不仅仅是范围名称(例如电子邮件)。

    【讨论】:

    • 你有使用这个调用 API 的例子吗?这将非常有帮助 - 在此先感谢!
    • 同意。如果您有示例,那将非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2012-08-13
    • 2018-04-13
    相关资源
    最近更新 更多