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

iOS Objective-C中调用DropBox获取共享链接遇NotFound问题排查

解决iOS9中Dropbox API调用getSharedLinkMetadata返回NotFound的问题

我之前在项目里踩过类似的坑,结合Dropbox API v2的规则和iOS9的兼容性情况,给你几个针对性的排查和解决方向:

  • 别搞混接口用途:你是不是没创建共享链接就直接查元数据?
    getSharedLinkMetadata这个接口是用来获取已经存在的共享链接的元数据,而不是帮你创建新的共享链接!如果目标文件还没生成过共享链接,调用这个接口必然会返回NotFound。如果需要创建共享链接,应该用createSharedLinkWithSettings接口,代码示例:

    DBFILESCreateSharedLinkWithSettingsArg *arg = [[DBFILESCreateSharedLinkWithSettingsArg alloc] initWithPath:path];
    [[client.sharingRoutes createSharedLinkWithSettings:arg] setResponseBlock:^(DBSHARINGSharedLinkMetadata *result, DBSHARINGCreateSharedLinkWithSettingsError *routeError, DBRequestError *requestError) {
        if (requestError) {
            NSLog(@"创建共享链接失败: %@", requestError);
        } else {
            NSLog(@"获取到共享链接: %@", result.url);
        }
    }];
    
  • 检查路径格式是否正确
    Dropbox API v2对路径的要求很严格:

    • 如果你的App是「App Folder」权限,路径必须是相对于你的App专属文件夹的根目录,比如文件在App文件夹下的/notes/2024.txt,就直接传这个路径,不能用Dropbox全局路径;
    • 路径必须以斜杠/开头,不能有多余的空格或者拼写错误;
    • 可以先调用listFolder接口验证路径是否存在,避免路径本身就是错的:
      [[client.filesRoutes listFolder:@"/"] setResponseBlock:^(DBFILESListFolderResult *result, DBFILESListFolderError *routeError, DBRequestError *requestError) {
          if (requestError) {
              NSLog(@"列出文件失败: %@", requestError);
          } else {
              // 遍历result.entries确认目标路径是否存在
              NSLog(@"当前目录文件列表: %@", result.entries);
          }
      }];
      
  • 确认iOS9的SDK兼容性
    最新的Dropbox SDK可能已经放弃了iOS9支持,你要确保使用的是仍兼容iOS9的SDK版本,比如在Podfile里指定:

    pod 'DropboxOfficialSDK', '~> 6.0'
    

    这个版本是明确支持iOS9的,更高版本可能会在旧系统上出现奇怪的错误。

  • 检查权限和文件存在性

    • 确认你的Dropbox App在控制台里已经开启了「sharing」相关的权限,用户授权时也同意了这些权限;
    • 目标文件/文件夹确实存在于用户授权的Dropbox空间里,没有被删除、移动或者重命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:47:43