Ich möchte vermeiden, dieses Skript immer wieder autorisieren zu müssen. Mit anderen Worten, wenn ich das Skript vom Terminal aus starte, gibt es mir einen Link, den ich in einem Browser öffnen muss, dann klicke auf den "Zulassen" -Button im Browser und gehe zurück zum Terminal ... Ich denke, es gibt einen Weg um die Authentifizierungsdetails zu speichern, aber wie?python dropbox api - Token-Datei speichern?
# Include the Dropbox SDK libraries
from dropbox import client, rest, session
# Get your app key and secret from the Dropbox developer website
APP_KEY = 'xxxxxxxxxxx'
APP_SECRET = 'yyyyyyyyyyyy'
ACCESS_TYPE = 'dropbox'
sess = session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE)
request_token = sess.obtain_request_token()
# Make the user sign in and authorize this token
url = sess.build_authorize_url(request_token)
print "url:", url
print "Please authorize in the browser. After you're done, press enter."
raw_input()
# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)
client = client.DropboxClient(sess)
#stored_creds = open(CONF_DIR + self.TOKEN_FILE).read()
print "linked account:", client.account_info()
f = open('t.txt')
response = client.put_file('/uploaded_with_python.txt', f)
print "uploaded:", response
folder_metadata = client.metadata('/')
print "metadata:", folder_metadata
f, metadata = client.get_file_and_metadata('/uploaded_with_python',rev='362e2029684fe')
out = open('/uploaded_with_python.txt', 'w')
out.write(f)
print(metadata)
------------------------------------------- -------------------------------------------------BEARBEITEN
ich das Skript geändert und es erstellt das Skript aber ich habe immer noch Probleme, die die Token-Datei zu lesen
# Include the Dropbox SDK libraries
from dropbox import client, rest, session
# Get your app key and secret from the Dropbox developer website
APP_KEY = 'i4ffahjltei1bnu'
APP_SECRET = 'cjullao1iiymrse'
ACCESS_TYPE = 'dropbox'
#acces token file
token_file = open(TOKENS)
token_key,token_secret = token_file.read().split('|')
token_file.close()
sess = session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE)
request_token = sess.obtain_request_token()
# Make the user sign in and authorize this token
url = sess.build_authorize_url(request_token)
print "url:", url
print "Please authorize in the browser. After you're done, press enter."
raw_input()
# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)
#save token file
TOKENS = 'dropbox_token.txt'
token_file = open(TOKENS,'w')
token_file.write("%s|%s" % (access_token.key,access_token.secret))
token_file.close()
client = client.DropboxClient(sess)
print "linked account:", client.account_info()
f = open('t.txt')
response = client.put_file('/uploaded_with_python.txt', f)
print "uploaded:", response
folder_metadata = client.metadata('/')
print "metadata:", folder_metadata
f, metadata = client.get_file_and_metadata('/uploaded_with_python',rev='362e2029684fe')
out = open('/uploaded_with_python.txt', 'w')
out.write(f)
print(metadata)
ich diesen Fehler:
Traceback (most recent call last):
File "dropb.py", line 14, in <module>
token_file = open(TOKENS)
NameError: name 'TOKENS' is not defined
der Fehler "' Name 'TOKENS' ist nicht defined'" sagt alles: Das liegt daran, dass Sie in Ihrem Bearbeitungscode die Definition "' TOKENS = 'dropbox_token.txt'' "ein paar Zeilen nach der ersten Verwendung geschrieben haben, nämlich die Zeile" 'token_file = open (TOKENS)' " ... Verschieben Sie die Definitionszeile früher in Ihrem Code, bevor die erste Verwendungszeile angezeigt wird. – sdaau
Wollen Sie APPKEY und APPTOKEN wirklich mit dem Internet teilen? –