我正在尝试从运行在localhost上的网页测试连接到Dropbox应用(在我的帐户上创建)。我选择生成授权代码而不是使用重定向。当我尝试访问app文件夹的元数据时,似乎在代码页(https://www.dropbox.com/1/oauth2/authorize_submit)上生成并显示的任何代码都会在控制台中产生错误:
window.open('https://www.dropbox.com/1/oauth2/authorize?client_id=<appId>&response_type=code');
POST https://api.dropboxapi.com/1/metadata/auto/ 401 (Unauthorized)
DropboxCloud @ DropboxCloud.js:8
(anonymous) @ MainWindowStandalone.js:45
DropboxCloud.js:10 {"error": "The given OAuth 2 access token doesn't exist or has expired."}
但是,如果我使用在Dropbox应用页面上生成的授权代码,我可以成功访问该文件夹:
DropboxCloud.js:10 {"hash": "68a0fc8c0c5670ff10e8e98b7fefcde8", "thumb_exists": false, "bytes": 0, "path": "/", "is_dir": true, "icon": "folder", "root": "app_folder", "contents": [], "size": "0 bytes"}
我的代码:
var request = new XMLHttpRequest();
const url = 'https://api.dropboxapi.com/1/metadata/auto/';
request.open('post', url, true);
request.setRequestHeader('Authorization', 'Bearer ' + accessToken);
request.setRequestHeader('Content-Type', 'application/json');
request.send();
request.onload = () => {
console.log(request.response);
};
我想使用代码生成页面授予其他人访问权限,以帮助我测试我的应用。我还需要做些什么呢?
答案 0 :(得分:1)
这里的问题是&#34;授权代码&#34;与&#34;访问令牌&#34;不同,不能互换使用。
使用OAuth 2&#34;令牌&#34;检索令牌时流动,或通过&#34;生成&#34; App Console上应用页面上的按钮,可为您提供实际的Dropbox API OAuth 2访问令牌。这可用于进行API调用,例如/ 1 /元数据。
使用OAuth 2&#34;代码&#34;从/ oauth2 / authorize获取的字符串flow只是一个授权码。这本身不能用于进行API调用。这是一个临时代码,您可以使用/oauth2/token来交换访问令牌。
(另请注意,Dropbox API v1,例如/ 1 /元数据,为deprecated。)