Как открыть всплывающее окно с 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