Python dropbox api - save token file?

I want to avoid re-authorizing this script. In other words, when I run the script from the terminal, it gives me a link that I have to open in the browser, then click the "Allow" button in the browser, then go back to the terminal ... There is probably a way to save the authentication data, but how?

# 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) 

----------------------------------------------- --- ------------------------------------------ EDIT

I modified the script and created the script, however I still have problems reading the token file

 # 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) 

I get this error:

 Traceback (most recent call last): File "dropb.py", line 14, in <module> token_file = open(TOKENS) NameError: name 'TOKENS' is not defined 
+7
source share
1 answer

You can write access_token to a file:

 TOKENS = 'dropbox_token.txt' token_file = open(TOKENS,'w') token_file.write("%s|%s" % (access_token.key,access_token.secret) ) token_file.close() 

If you do this once, afterwords you can use this token:

 token_file = open(TOKENS) token_key,token_secret = token_file.read().split('|') token_file.close() sess = session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE ) sess.set_token(token_key,token_secret) client = client.DropboxClient(sess) 
+20
source

All Articles