2017-03-16 80 views
0

我試圖從本地主機上運行的網頁測試連接到Dropbox應用程序(在我的帳戶中創建)。我選擇了生成授權碼,而不是使用重定向。看來,在此產生和代碼頁上顯示的任何代碼(https://www.dropbox.com/1/oauth2/authorize_submit)在控制檯產生一個錯誤,當我嘗試訪問的應用程序文件夾的元數據:從瀏覽器訪問Dropbox應用程序

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); 
     }; 

我想授予他人訪問使用日e代碼生成頁面來幫助我測試我的應用程序。我還需要什麼來使其工作?

回答

1

這裏的問題是「授權代碼」與「訪問令牌」不同,並且不能互換使用。

當您使用OAuth 2「令牌」流或通過App Console上的應用頁面上的「生成」按鈕檢索令牌時,該令牌會爲您提供實際的Dropbox API OAuth 2訪問令牌。這可以用來進行API調用,比如/ 1 /元數據。

當您使用OAuth 2「代碼」流程時,您從/ oauth2/authorize返回的字符串僅爲授權代碼。這本身不能用於進行API調用。這是一個臨時代碼,您可以使用/oauth2/token來交換訪問令牌。 (另請注意,Dropbox API v1,例如/ 1 /元數據,爲deprecated。)

相關問題