Как открыть всплывающее окно с dropbox-api dropbox-js V2

Я пытаюсь перейти на dropbox-api v2 в моем веб-приложении. В настоящее время у меня есть реализация открывающегося всплывающего окна, где пользователь подключается к его / ее Dropbox, и я получаю токен. Который я использую, чтобы получить доступ к файлам, выбранным пользователем в Dropbox.chooser на последующих шагах.

Но мне трудно найти решение для этого. У меня есть ссылка на все миграционные документы, которые есть в Dropbox, но нет ни слова о том, что эквивалентно client.authenticate() и Dropbox.AuthDriver.Popup()?

1 ответ

Решение

Общий Dropbox!!! Я только что обнаружил эту проблему, опубликованную в GitHub для dropbox-sdk-js, и ответил, что у них нет этой функциональности в V2:(это действительно разочаровывает, мне нужно реализовать весь персонал самостоятельно:

https://github.com/dropbox/dropbox-sdk-js/issues/73

обновленный

Я реализовал свое решение и хотел бы поделиться, если кому-то понадобится.

Чтобы открыть всплывающее окно, я использую следующий код:

window.open(dropbox.getAuthenticationUrl("MY REDIRECT URL"), 'DropboxAuthPopup', 'dialog=yes,dependent=yes,scrollbars=yes,location=yes')

window.addEventListener('message',function(e) {
   if (window.location.origin !== e.origin) {
       // Throw error
   } else {
       // e.data Is what was sent from redirectUrl
       // e.data.access_token is the token I needed from dropbox
   }
},false);

Затем на своей странице, которую я указываю dropbox для перенаправления, я положил:

window.addEventListener('load', function() {
    var message = parseQueryString(window.location.hash)
    window.location.hash = '';

    opener = window.opener
    if (window.parent != window.top) {
        opener =  opener || window.parent
    }

    opener.postMessage(message, window.location.origin);
    window.close();

})

Пример parseQueryString можно найти в примерах dropbox -sdk-js

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