Tim*_*imi 12 python dropbox access-token python-3.x dropbox-api
正如标题所示,我正在尝试生成刷新令牌,然后我想使用刷新令牌来获取短暂的访问令牌。
但有一个问题,因为我不够聪明,无法理解dropbox 网站上的文档,而且我发现的所有其他信息对我不起作用(A、B、C)或者是某种语言我不明白。
我已经尝试了github 页面中的所有三个示例,以及该网站上其他问题的用户代码。
我没有什么事情要做。
我得到的最多的是
错误:400 客户端错误:URL 请求错误:api.dropboxapi.com/oauth2/token
和
dropbox.rest.RESTSocketError:连接到“api.dropbox.com”时出错:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地颁发者证书(_ssl.c:1123)
:(
Spa*_*row 33
我是这样做的。我会尽量保持简单和精确
将以下授权 URL 中的 <APP_KEY> 替换为您的 Dropbox 应用密钥
https://www.dropbox.com/oauth2/authorize?client_id= <APP_KEY>&token_access_type=offline&response_type=code
完成授权 URL 上的代码流。最后您将收到AUTHORIZATION_CODE 。
转到Postman并使用以下配置创建一个新的 POST 请求
| 钥匙 | 价值 |
|---|---|
| 代码 | <授权代码> |
| 授予类型 | 授权码 |
发送请求后,您将收到包含刷新令牌的 JSON 负载。
{
"access_token": "sl.****************",
"token_type": "bearer",
"expires_in": 14400,
"refresh_token": "*********************",
"scope": <SCOPES>,
"uid": "**********",
"account_id": "***********************"
}
Run Code Online (Sandbox Code Playgroud)
在你的Python应用程序中,
import dropbox
dbx = dropbox.Dropbox(
app_key = <APP_KEY>,
app_secret = <APP_SECRET>,
oauth2_refresh_token = <REFRESH_TOKEN>
)
Run Code Online (Sandbox Code Playgroud)
希望这也适合你!
chj*_*jch 13
上面的所有方法都有效,只是想发布一个纯Python解决方案,它本身引用了上面的答案。
APP_KEY为上一步获取的值)并在浏览器中完成该过程以获取Access Code generated。import webbrowser
APP_KEY = '<APP_KEY>'
url = f'https://www.dropbox.com/oauth2/authorize?client_id={APP_KEY}&' \
f'response_type=code&token_access_type=offline'
webbrowser.open(url)
Run Code Online (Sandbox Code Playgroud)
APP_KEY、APP_SECRET、 和替换ACCESS_CODE_GENERATED为以下代码片段中的实际值。运行片段。import base64
import requests
import json
APP_KEY = '<APP_KEY>'
APP_SECRET = '<APP_SECRET>'
ACCESS_CODE_GENERATED = '<ACCESS_CODE_GENERATED>'
BASIC_AUTH = base64.b64encode(f'{APP_KEY}:{APP_SECRET}'.encode())
headers = {
'Authorization': f"Basic {BASIC_AUTH}",
'Content-Type': 'application/x-www-form-urlencoded',
}
data = f'code={ACCESS_CODE_GENERATED}&grant_type=authorization_code'
response = requests.post('https://api.dropboxapi.com/oauth2/token',
data=data,
auth=(APP_KEY, APP_SECRET))
print(json.dumps(json.loads(response.text), indent=2))
Run Code Online (Sandbox Code Playgroud)
ore*_*bac 11
前面的答案很有效,但如果您需要快速运行一些东西,您可以使用以下代码片段:
#/bin/bash
echo -n "Enter APP_KEY"
read APP_KEY
echo -n "Enter APP_SECRET"
read APP_SECRET
BASIC_AUTH=$(echo -n $APP_KEY:$APP_SECRET | base64)
echo "Navigate to URL and get ACCESS CODE"
echo "https://www.dropbox.com/oauth2/authorize?client_id=$APP_KEY&token_access_type=offline&response_type=code"
echo -n "Return to this script once you have the ACCESS_CODE"
read DUMMY
echo -n "Enter the ACCESS_CODE"
read ACCESS_CODE_GENERATED
curl --location --request POST 'https://api.dropboxapi.com/oauth2/token' \
--header "Authorization: Basic $BASIC_AUTH" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "code=$ACCESS_CODE_GENERATED" \
--data-urlencode 'grant_type=authorization_code'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11799 次 |
| 最近记录: |