PyDrive guath.Refresh()和刷新令牌问题



和其他人一样,我试图让Google刷新令牌工作,以便运行复制和重命名文件的计划任务。

当我第一次在终端内手动进行身份验证时,我的url以&access_type=offline结束。但是,当我进入并尝试在python中手动使用gauth.Refresh()时,它会失败,并出现与我的凭据文件过期时相同的错误:

pydrive.auth.RefreshError: No refresh_token found.Please set access_type of OAuth to offline.

如何将access_type设置为离线?如有任何建议,不胜感激。

我一直在这里,这里,这里试图解决这个问题。

我的脚本:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
# Try to load saved client credentials
gauth.LoadCredentialsFile("GoogleDriveCredentials.txt")
if gauth.credentials is None:
    # Authenticate if they're not there
    gauth.LocalWebserverAuth()
elif gauth.access_token_expired:
    # Refresh them if expired
    print "Google Drive Token Expired, Refreshing"
    gauth.Refresh()
else:
    # Initialize the saved creds
    gauth.Authorize()
# Save the current credentials to a file
gauth.SaveCredentialsFile("GoogleDriveCredentials.txt")
drive = GoogleDrive(gauth)

我的设置。yaml文件:

client_config_backend: settings
client_config:
  client_id: ###actual client_id###
  client_secret: ###actual client_secret###
save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json
get_refresh_token: True
oauth_scope:
  - https://www.googleapis.com/auth/drive

我一直在那里,下面为我工作。

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive   
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
gauth.LoadCredentialsFile(gauth)

用上面的代码在根目录下创建一个名为quickstart.py的新文件夹。
下载client_sercrets。从Google drive API凭据中取出Json,放到根目录
把你的设置。根目录下的Yaml文件
从控制台中运行quickstart.py,它将打开一个浏览器,询问您是否授权应用程序。
完成此过程后,它将创建一个凭据。
访问令牌现在应该能够自我刷新了。

驱动器API设置需要注意的几件事,它应该是Web应用程序类型,在授权Javascript "http://localhost:8080"和在授权重定向uri "http://localhost:8080/"

如果成功,则保留"凭据"。json"、"client_secret。json"、"设置。把Yaml "文件放到你的生产根目录,它应该可以工作。

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新