python dropbox api - 保存 token 文件?

标签 python api authentication dropbox

我想避免不得不一遍又一遍地授权这个脚本。换句话说,当我从终端启动脚本时,它会给我一个链接,我必须在浏览器中打开它,然后单击浏览器中的“允许”按钮,然后返回到终端……我想有办法保存身份验证详细信息,但如何保存?

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

-------------------------------------------- ------------------------------------------编辑

我修改了脚本并创建了脚本,但是我在读取 token 文件时仍然遇到问题

# 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

最佳答案

您可以将 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 :

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)

关于python dropbox api - 保存 token 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10549326/

相关文章:

python - 为什么在尝试绘制散点图时出现 KeyError?

c# - 使用日志包装器

api - 如何使用wigle.net API

android - 使用摘要式 HTTP 身份验证 : “Cannot retry streamed HTTP body” 改造 POST 请求

python - 无法在 Couchdb 上运行 Python View

python - 如何使用python处理时间序列中股票价格的连续缺失值?

api - NginX(开源,不是Nginx plus)支持API网关吗?

php - 注册和登录密码哈希方法相同但不起作用

authentication - 使用 Meteor.loginWithExternalService() 区分注册和登录

python - 使零为零并在Python中找到矩阵的逆