2012-05-11 8 views
7

मैं इस स्क्रिप्ट को और अधिक बार अधिकृत करने से बचना चाहता हूं। दूसरे शब्दों में, जब मैं टर्मिनल से स्क्रिप्ट लॉन्च करता हूं, तो यह मुझे एक लिंक देता है जिसे मुझे ब्राउज़र में खोलना है, फिर ब्राउजर में 'अनुमति दें' बटन पर क्लिक करें और फिर टर्मिनल पर वापस जाएं ... मुझे लगता है कि एक रास्ता है प्रमाणीकरण विवरण बचाने के लिए कैसे?पायथन ड्रॉपबॉक्स एपीआई - टोकन फ़ाइल सहेजें?

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

------------------------------------------- ------------------------------------------------- संपादित करें

मैं स्क्रिप्ट को संशोधित करके और यह स्क्रिप्ट बनाने हालांकि मैं अभी भी टोकन फ़ाइल

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

पढ़ने मैं इस त्रुटि मिलती है समस्या है:

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

त्रुटि "' नाम 'टोकन' defined' नहीं है "यह कहता है कि सब: ऐसा इसलिए है क्योंकि आपके संपादन कोड में, आपने परिभाषा "' TOKENS = 'dropbox_token.txt'' "कुछ पंक्तियों को पहली बार उपयोग करने के बाद लिखा है, जो पंक्ति है" token_file = open (टोकन) '" ... पहली उपयोग लाइन प्रकट होने से पहले, बस अपने कोड में पहले परिभाषा रेखा को स्थानांतरित करें। – sdaau

+0

क्या आप वास्तव में इंटरनेट के साथ ऐपकी और एपटोकन साझा करना चाहते हैं? –

उत्तर

20

आप लिख सकते हैं एक फाइल करने के लिए ACCESS_TOKEN:

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

आपको लगता है कि एक बार, तो समापन आपको लगता है कि टोकन का उपयोग कर सकते हैं करते हैं:

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) 
+0

टोकन फ़ाइल तथापि सहेजा जाता है मैं यह त्रुटि आई: Traceback (सबसे हाल कॉल पिछले): फ़ाइल "dropb.py", रेखा 11, token_file = खुला (टोकन) NameError में: नाम 'टोकन' नहीं है परिभाषित – alkopop79

+0

भयानक समाधान –