Невозможно создать общую ссылку с помощью Dropbox SDK

У меня проблема с регистрацией sharingCreateSharedLinkWithSettingsответ метода. Я пробовал использовать короткоживущие и долгоживущие токены и получаю коды ошибок 409/400/401. Я также не слишком уверен, каким должен быть путь. Если папка приложения называется tron и у меня есть файл с именем в этой папке, если строка пути должна быть /tron/cabin.mp3, cabin.mp3 или /cabin.mp3. Я также не уверен, что у меня просто проблема с аутентификацией, хотя я передаю accessToken.

У меня нет проблем с отображением имен файлов с filesListFolder метод, поэтому не уверен, что мне не хватает.

      
import './App.css';
import { Dropbox } from 'dropbox';


var dbx = new Dropbox({ accessToken: ACCESSTOKEN });


dbx.filesListFolder({path: ''})
  .then(function(response) {
    console.log(response);
    displayFiles(response.result.entries);
  })
  .catch(function(error) {
    console.log(error);
  });




dbx.sharingCreateSharedLinkWithSettings({path:'/tron/cabin.mp3'})
  .then(function(response){
    console.log('share:' + response)
    displaySharedLinks(response);
  })
  .catch(function(error){
    console.log(error);
  })

function displayFiles(files) {
      var filesList = document.getElementById('files');
      var li;
      for (var i = 0; i < files.length; i++) {
        li = document.createElement('li');
        li.appendChild(document.createTextNode(files[i].name));
        filesList.appendChild(li);
      }
}


function App() {
  return (
    <div className="App">
      <header className="App-header">
        <div id="files"></div>
 
      </header>
    </div>
  );
}




export default App;

1 ответ

Коды состояния, такие как коды 400, 401 и 409, которые вы получаете, просто указывают тип ошибки ответа. Вы можете получить более конкретную информацию об ошибке из вложенного объекта ошибки API следующим образом:

        .catch(function(error){
    console.log(error.error);
  })

Например, с ошибкой 409 вы можете получить ошибку API, например path/not_found, что указывает на то, что на этом пути в подключенной учетной записи нет ничего.

Что касается пути, который вы должны использовать, это зависит от состояния учетной записи и типа доступа к вашему приложению. В общем, вы можете использовать path_lower возвращенный для элемента другими вызовами, например из filesListFolder/ filesListFolderContinue или filesGetMetadata.

Обратите внимание, что приложения, использующие тип «папка приложения», располагаются в специальной папке приложения, созданной для приложения. Вызовы API для приложений, использующих этот тип, автоматически выполняются относительно самой папки приложения, поэтому вам не следует также указывать путь к самой папке приложения при выполнении вызовов API для такого типа приложения, например, для вывода списка содержимого папки. .

Это означает, что если вы хотите получить доступ к папке «tron» внутри папки приложения приложения, вместо «/ Apps / AppName / tron» вы просто позвоните с помощью «/ tron». Аналогичным образом, чтобы получить доступ к файлу в «/Apps/AppName/tron/cabin.mp3», вы должны просто указать «/tron/cabin.mp3». Или, если вы имели в виду, что «/ tron» - это путь к специальной папке приложения, а файл находится непосредственно внутри нее, вы должны указать просто «/cabin.mp3».

Приложения с типом «полный Dropbox» могут получить доступ ко всему в учетной записи, поэтому должны указывать полный путь.

Дополнительную информацию можно найти в Руководстве по доступу к файлам.

Другие вопросы по тегам