2017-03-16 14 views
0

localhost上で実行されているWebページから、自分のアカウントで作成したDropboxアプリへの接続をテストしようとしています。私は、リダイレクトを使用するのではなく、認証コードを生成することを選択しました。私がappフォルダのメタデータにアクセスしようとすると、生成されたコード・ページ(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のアプリページIに成功したフォルダに到達することができます:

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

ここでの問題は、「認証コード」が「アクセストークン」と同じではなく、互換的に使用できないことです。

OAuth 2の「トークン」フローを使用してトークンを取得するか、App Consoleのアプリのページで「生成」ボタンを使用してトークンを取得すると、実際のDropbox API OAuth 2アクセストークンが得られます。これは、/ 1/metadataなどのAPI呼び出しを行うために使用できます。

OAuth 2の「コード」フローを使用したときに/ oauth2/authorizeから返される文字列は、認証コードだけです。 API呼び出し自体を使用することはできません。これは、/oauth2/tokenを使用してアクセストークンを交換できる一時的なコードです。

(また、/ 1/metadataなどのDropbox API v1はdeprecatedです)

関連する問題