6

他の人と同じように、ファイルをコピーして名前を変更するスケジュールされたタスクを実行するために、Google の更新トークンを機能させようとしています。

端末内で最初に手動で認証するとき、私の URL は &access_type=offline で終わります。ただし、ipython で手動で 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)

私の settings.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
4

1 に答える 1

-1

私はそこにいて、以下が私のために働いています。

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

上記のコードを含む新しいフォルダーをルート ディレクトリに quickstart.py として作成します。
Google ドライブの API 認証情報から client_sercrets.json をダウンロードし、ルートに配置し
ます settings.yaml ファイルをルート フォルダーに配置
します コンソールから quickstart.py を実行すると、ブラウザーが開き、アプリの承認を求められます。
このプロセスが完了すると、ルート ディレクトリに credentials.json ファイルが作成されます。
アクセストークンは今すぐ更新できるはずです。

Drive API の設定で注意すべき点はいくつかあります。Javascript の承認 " http://localhost:8080 " および承認されたリダイレクト URI " http://localhost:8080/ "では、Web アプリケーション タイプである必要があります。

これが成功した場合、「credentials.json」、「client_secrets.json」、「settings.yaml」ファイルを本番ルート ディレクトリに引き継ぐと、機能するはずです。

お役に立てれば!

于 2015-10-02T12:21:57.883 に答える