如何使用 dropbox-api dropbox-js V2 打开弹出窗口

Gag*_*yan 2 dropbox dropbox-api dropbox-sdk-js

我正在尝试在我的 Web 应用程序中迁移到 dropbox-api v2。目前我已经实现了打开弹出窗口,用户连接到他/她的保管箱并获得令牌。我用它来访问用户在后面的步骤中在 Dropbox.chooser 中选择的文件。

但是我很难找到解决方案。我有 dropbox 拥有的所有迁移文档的链接,但没有任何关于 client.authenticate() 和 Dropbox.AuthDriver.Popup() 的等价物的字样?

Gag*_*yan 5

常见的 Dropbox !!!我刚刚在 GitHub 上发现了针对 dropbox-sdk-js 发布的这个问题,并且他们在 V2 中没有这个功能的答案:( 真的很令人失望,我需要自己实现所有员工:

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

更新

我已经实施了我的解决方案,如果有人需要,我想分享。

要打开一个弹出窗口,我使用以下代码:

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);
Run Code Online (Sandbox Code Playgroud)

然后在我指定 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();

})
Run Code Online (Sandbox Code Playgroud)

可以从dropbox-sdk-js 示例中找到 parseQueryString 的示例