PyDrive无浏览器命令行环境下替代LocalWebserverAuth的认证方案问询
PyDrive 命令行环境认证实现方案
PyDrive 本身内置了两种可在无浏览器命令行环境使用的认证方案,完全可以替代 LocalWebserverAuth:
方案1:命令行手动授权模式(适合个人开发场景)
该方案无需启动本地web服务,会直接生成授权链接,用户可在其他有浏览器的设备完成授权后回传授权码完成认证。
前提操作
在Google Cloud Console创建OAuth 2.0桌面应用凭证,将下载的凭证文件命名为 client_secret.json 放到项目根目录。
示例代码
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive gauth = GoogleAuth() # 调用命令行授权方法替代LocalWebserverAuth gauth.CommandLineAuth() drive = GoogleDrive(gauth)
操作流程
运行代码后终端会输出授权链接,在任意设备的浏览器打开该链接,登录对应Google账号完成授权后,复制页面生成的授权码,粘贴回终端回车即可完成认证。
方案2:服务账号认证(适合无人值守的自动化服务场景)
该方案完全不需要人工操作,适合服务器上运行的自动化脚本使用。
前提操作
在Google Cloud Console创建服务账号,下载JSON格式的密钥文件存到项目目录;如果需要访问个人云端硬盘内容,提前给服务账号对应的邮箱地址授予目标文件/文件夹的访问权限。
示例代码
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from oauth2client.service_account import ServiceAccountCredentials # 授权范围按需调整,drive代表获取全部云端硬盘权限 scope = ['https://www.googleapis.com/auth/drive'] gauth = GoogleAuth() # 加载服务账号密钥文件生成凭证 gauth.credentials = ServiceAccountCredentials.from_json_keyfile_name('service_account_key.json', scope) drive = GoogleDrive(gauth)
提示:如果你使用的是Google Workspace账号,可以在生成凭证时添加
sub='目标用户邮箱'参数,直接模拟访问该用户的云端硬盘,无需额外给服务账号授权。
通用优化:两种认证方案都支持凭证缓存,认证成功后可调用
gauth.SaveCredentialsFile('my_credentials.json')将凭证存入本地,下次运行先调用gauth.LoadCredentialsFile('my_credentials.json')即可直接复用凭证,无需重复执行授权流程。
内容的提问来源于stack exchange,提问作者Luk Aron
相关产品推荐
相关产品推荐

