首页 文章

从浏览器访问Dropbox应用程序

提问于
浏览
0

我选择了生成授权代码而不是使用重定向 . 当我尝试访问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);
        };

我想使用代码生成页面授予其他人访问权限,以帮助我测试我的应用程序 . 我还需要做些什么呢?

1 回答

  • 1

    这里的问题是“授权代码”与“访问令牌”不同,并且不能互换使用 .

    当您使用OAuth 2 "token"流程或通过App Console上应用页面上的"Generate"按钮检索令牌时,会为您提供实际的Dropbox API OAuth 2访问令牌 . 这可用于进行API调用,例如/ 1 /元数据 .

    使用OAuth 2 "code"流时从/ oauth2 / authorize返回的字符串只是一个授权码 . 它本身不能用于进行API调用 . 它是一个临时代码,您可以使用/oauth2/token交换访问令牌 .

    (另请注意,Dropbox API v1,例如/ 1 /元数据,是deprecated . )

相关问题