【问题标题】:Cordova mobile app and Dropbox API v2Cordova 移动应用和 Dropbox API v2
【发布时间】:2017-02-22 19:02:52
【问题描述】:

有没有人让 Dropbox API v2 在 Cordova 移动应用程序中工作?甚至是移动应用期? API v1 & Cordova 有一个教程: http://ourcodeworld.com/articles/read/149/how-to-use-dropbox-in-a-cordova-application 但 Dropbox 已经或正在弃用它。

我有一个 Github 项目,它是一个基本的 Cordova 项目(版本 6.5.0),并且包含 Dropbox API v2。我可以让项目进入授权屏幕,但我相信我的问题是重定向 URI。

我正在使用:

但是,我已经将所有内容都放入了 Github 存储库: https://github.com/ModusPwnens1337/dropboxTest

我认为重定向 URI 是问题所在,您可以在 index.html 的第 128 行找到它:

var authUrl = dbx.getAuthenticationUrl('https://www.dropbox.com/oauth2/authorize?response_type=token&client_id=8nvbrxvlg96tx1k&redirect_uri=helloworld://localhost/callback');

请让我知道是否有人已获得或可以获得重定向回移动应用程序的授权。

提前谢谢你!

【问题讨论】:

  • 您有使用 Dropbox API V2 的插件吗?您是如何在您的 APP 中实现 Dropbox API V2 功能的?
  • @Nikhil 你弄明白了还是需要帮助?
  • 我仍在进行迁移,需要一些帮助。以前我使用 ross martin 插件来实现 Dropbox 功能。现在由于 API V2 没有其他插件可用,我正在尝试使用 Dropbox sdk github.com/dropbox/dropbox-sdk-js 实现 Dropbox 功能。我曾尝试使用 customurlscheme 插件来提供重定向 uri,但在添加插件后,它会从我的项目中删除许多文件。所以我目前正在使用来自 javascript sdk (dropbox.github.io/dropbox-sdk-js) 的 authenticateWithCordova() 方法。
  • 此方法使用dropbox.com/1/oauth2/redirect_receiver 作为重定向uri。它在用户第一次单击身份验证按钮时起作用(返回访问令牌)。问题: 1.)如果同一用户再次尝试进行身份验证,则会显示黑屏并将用户重定向到应用程序。 2.) 使用哪种方法上传文件?我尝试使用需要文件内容作为参数的 filesUpload() 方法。那么如何在 Javascript 或 Cordova 中提供文件内容呢?
  • 或者告诉我你的实现方式。

标签: android cordova jquery-mobile dropbox dropbox-api


【解决方案1】:

好吧,我想通了! 我在项目中遇到了三个问题:

  1. 我的重定向 URI 错误,应该是以下内容:

    var authUrl = dbx.getAuthenticationUrl('helloworld://localhost/callback');

  2. 我没有正确设置自定义 URL 方案,幸运的是有一个漂亮的小插件可以使用:https://github.com/EddyVerbruggen/Custom-URL-scheme。这是我在 CLI 中运行以安装插件:cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=helloworld

  3. 添加插件并阅读说明后,您会看到需要添加一个函数来处理回调访问令牌,如下所示:

function handleOpenURL(url) {
    console.log("handleOpenURL: " + url);
    showPageSection('authed-section');
    // Create an instance of Dropbox with the access token and use it to
    // fetch and render the files in the users root directory.
    var dbx = new Dropbox({ accessToken: getAccessTokenFromUrl2(url) });
    dbx.filesListFolder({path: ''})
        .then(function(response) {
            renderItems(response.entries);
        })
        .catch(function(error) {
            console.error(error);
        });
}

而且您还必须编辑 getAccessTokenFromCustomUrl 才能使用新的回调:

function getAccessTokenFromUrl2(url) {
    url = url.split('#')[1];
    console.log('getAccessTokenFromUrl2: ' + utils.parseQueryString(url).access_token);
    return utils.parseQueryString(url).access_token;
}

注意,不要忘记重定向 uri 需要在应用控制台的应用页面上预先注册:https://www.dropbox.com/developers/apps

【讨论】:

    【解决方案2】:

    您可以尝试将这个 Cordova 插件用于 Oauth2(它也使用 In-App-Browser 插件):https://github.com/krisrak/jquery-cordova-oauth2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多