You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SwiftyDropbox上传音频至Dropbox遇授权问题求助

解决Dropbox授权问题的方案

1. App Key是否需要加"db-"前缀?

不需要。DropboxClientsManager.setupWithAppKey() 只需要填入你在Dropbox开发者控制台获取的原始App Key,不要添加"db-"前缀。"db-"是用于配置URL Scheme时的前缀,和初始化时的App Key无关。

2. Info.plist配置与授权失败问题

找不到配置项的解决办法

Xcode 14.3默认用可视化编辑器打开Info.plist,看不到LSApplicationQueriesSchemes和CFBundleURLTypes的话,右键点击Info.plist文件,选择「Open As」→「Source Code」,手动添加以下配置:

<!-- 允许跳转至Dropbox App -->
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>dbapi-8-emm</string>
    <string>dbapi-2</string>
</array>

<!-- 配置回调URL Scheme,注意替换成你的App Key -->
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>db-你的AppKey</string> <!-- 这里必须加db-前缀,替换成实际的App Key -->
        </array>
    </dict>
</array>

代码错误修正

你的授权回调代码有个关键错误:application(_:open:options:) 方法最后返回了false,应该返回true,告诉系统这个URL已经被处理:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    DropboxClientsManager.handleRedirectURL(url) { authResult in
        switch authResult {
        case .success:
            print("Dropbox authorization success")
        case .cancel:
            print("Dropbox authorization canceled")
        case .error(_, let description):
            print("Dropbox authorization error: \(description)")
        @unknown default:
            print("Unknown Dropbox authorization result")
        }
    }
    return true // 这里改成true
}

触发授权流程

你目前的代码只做了初始化,没有触发实际的授权操作。需要在合适的地方(比如按钮点击事件)调用授权方法:

// 示例:在ViewController的按钮点击事件中添加
@IBAction func loginToDropbox(_ sender: UIButton) {
    guard let controller = topMostViewController() else { return }
    DropboxClientsManager.authorizeFromController(UIApplication.shared,
                                                  controller: controller,
                                                  openURL: { url in
                                                    UIApplication.shared.open(url, options: [:], completionHandler: nil)
                                                  })
}

// 辅助方法:获取当前最上层的ViewController
private func topMostViewController() -> UIViewController? {
    var topController = UIApplication.shared.keyWindow?.rootViewController
    while let presented = topController?.presentedViewController {
        topController = presented
    }
    return topController
}

授权提示的原因

收到"Dropbox is not authorized or logged in"提示,大概率是这几个问题:

  • URL Scheme配置错误(没加db-前缀或App Key填错)
  • 回调方法返回false,导致授权结果无法正确传递
  • 没有主动触发授权流程,用户还未完成登录授权

内容的提问来源于stack exchange,提问作者Vivi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:05:14