【问题标题】:Google Drive API with Python from server(Backend) without browser autentication来自服务器(后端)的带有 Python 的 Google Drive API,无需浏览器身份验证
【发布时间】:2021-02-17 19:39:52
【问题描述】:

我想将我的 Saas Appication 文件保存到我的 Google Drive 帐户,我看到的所有示例都是使用 oauth2 autentication 并且需要最终用户 autenticate 打开浏览器,我需要从我的服务器上传文件无需任何用户交互,将文件直接发送到我的帐户!

我尝试了很多我在网上找到的教程都没有成功,主要是官方的

Google Drive API with Python

如何以编程方式从我的服务器进行身份验证并上传文件并使用 API 功能,例如共享文件夹和其他功能?

我正在使用 Python,lib PyDrive 使用相同的方法进行身份验证

【问题讨论】:

    标签: python google-drive-api


    【解决方案1】:

    您可以这样做,但需要使用Service Account,它是(或者更确切地说可以用作)应用程序的帐户,并且不需要打开浏览器。

    文档在这里:https://developers.google.com/api-client-library/python/auth/service-accounts

    还有一个例子(没有 PyDrive,它只是一个包装器,但让服务帐户有点棘手):

    from apiclient.discovery import build
    from oauth2client.service_account import ServiceAccountCredentials
    from httplib2 import Http
    
    scopes = ['https://www.googleapis.com/auth/drive.readonly']
    
    credentials = ServiceAccountCredentials.from_json_keyfile_name('YourDownloadedFile-5ahjaosi2df2d.json', scopes)
    
    http_auth = credentials.authorize(Http())
    drive = build('drive', 'v3', http=http_auth)
    
    request = drive.files().list().execute()
    files = request.get('items', [])
    for f in files:
        print(f)
    

    【讨论】:

      【解决方案2】:

      我知道答案已经很晚了,但这对我有用:

      使用与您相同的 API,这次在您的计算机上,它将生成一个 Storage.json,将它与您的脚本一起使用将解决问题(特别是在像 heroku 这样的只读平台中)

      【讨论】:

        【解决方案3】:

        添加到 andyhasit 的答案中,使用服务帐户是正确且最简单的方法。

        使用 JSON 密钥文件的问题是很难在其他任何地方部署代码,因为您不希望该文件处于版本控制中。一个更简单的解决方案是使用这样的环境变量:

        https://benjames.io/2020/09/13/authorise-your-python-google-drive-api-the-easy-way/

        【讨论】:

          【解决方案4】:

          查看使用 OAuth 2.0 for Web Server Applications。看来这就是你要找的东西。

          任何使用 OAuth 2.0 访问 Google API 的应用程序都必须具有 用于向 Google 识别应用程序的授权凭据 OAuth 2.0 服务器。以下步骤说明了如何创建 您的项目的凭据。然后,您的应用程序可以使用 访问您为该项目启用的 API 的凭据。

          在 API 控制台中打开凭据页面。单击创建凭据 OAuth 客户端 ID。完成表格。将应用程序类型设置为 Web 应用程序。使用 PHP 等语言和框架的应用程序, Java、Python、Ruby 和 .NET 必须指定授权的重定向 URI。 重定向 URI 是 OAuth 2.0 服务器可以访问的端点 发送响应。对于测试,您可以指定引用 本地机器,如http://localhost:8080

          我们建议您设计应用的身份验证端点,以便您的 应用程序不会向其他资源公开授权代码 页面。

          【讨论】:

          【解决方案5】:

          可能有点晚了,但我一直在通过 python、js 和 .net 使用 gdrive,一旦您获得授权码上的授权码,这是一个建议的解决方案 (REST API) How to refresh token in .net google api v3?

          如果您有任何问题,请告诉我

          【讨论】:

            猜你喜欢
            • 2020-04-22
            • 1970-01-01
            • 2017-09-14
            • 2013-01-05
            • 1970-01-01
            • 2017-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多