我正在尝试将用户添加到我的保管箱应用程序的开发用户中。为此,似乎我必须连接到端点/token/from_oauth1
或/和/oauth2/token
才能生成它们的访问令牌。我是使用API的新手,正在努力了解如何在我的代码中实现OAuth / OAuth2。我正在使用requests
库。
以下是我尝试过但尚未为我工作的示例:
import requests
import json
url = "https://api.dropboxapi.com/2/auth/token/from_oauth1"
headers = {
"Authorization": "Basic <APP_KEY>:<APP_SECRET>",
"Content-Type": "application/json"
}
data = {
"oauth1_token": "<DROPBOX_USERNAME>",
"oauth1_token_secret": "<DROPBOX_PASSWORD>"
}
r = requests.post(url, headers=headers, data=json.dumps(data))
但是我收到错误b'Error in call to API function "auth/token/from_oauth1": Invalid value in HTTP header "Authorization": "Basic <APP_KEY>:<APP_SECRET>"'
APP_KEY
和APP_SECRET
显然被其对应的字符串替换。
我有权打电话给/token/from_oauth1
而不是/oauth2/token
。如果是这样,我在哪里错了这个请求?
答案 0 :(得分:1)
如果要开始与Dropbox API的新集成,则不应使用/2/auth/token/from_oauth1。这仅适用于现有的OAuth 1访问令牌,您只能从与Dropbox API v1的旧集成中收到的令牌(现已淘汰)。
如果您现在就开始,那么您将仅使用Dropbox API v2和OAuth 2访问令牌。
要实现the OAuth app authorization flow以获取OAuth 2访问令牌以与Dropbox API v2一起使用,您应使用以下代码:
我还建议您查看the OAuth Guide。
在任何情况下,您都不应直接处理Dropbox的用户名和密码。
此外,由于您使用的是Python,因此我强烈建议您使用the official Dropbox API v2 Python SDK,因为它会为您完成大部分工作。它具有用于处理OAuth流的助手,例如DropboxOAuth2Flow
和DropboxOAuth2FlowNoRedirect
。
这是仅使用requests
处理Dropbox OAuth 2“代码”流的最小示例:
import requests
app_key = "APP_KEY_HERE"
app_secret = "APP_SECRET_HERE"
# build the authorization URL:
authorization_url = "https://www.dropbox.com/oauth2/authorize?client_id=%s&response_type=code" % app_key
# send the user to the authorization URL:
print 'Go to the following URL and allow access:'
print(authorization_url)
# get the authorization code from the user:
authorization_code = raw_input('Enter the code:\n')
# exchange the authorization code for an access token:
token_url = "https://api.dropboxapi.com/oauth2/token"
params = {
"code": authorization_code,
"grant_type": "authorization_code",
"client_id": app_key,
"client_secret": app_secret
}
r = requests.post(token_url, data=params)
print(r.text)