2

我有三个将文件上传到 Dropbox 的应用程序。三者的代码相同。他们都共享同一个文件夹,所以我使用了相同的密钥等

这是它变得奇怪的地方

1. 几个月来一切都很好

2. 现在在应用 2 和 3 上,当用户尝试登录时会打开第一个应用?

3. 注销再登录,没有帮助,只是说连接到 Dropbox 时出错,稍后再试

我试过什么

为所有三个应用程序创建单独的密钥等而不是共享相同的,仍然得到相同的行为?

对此的一些研究表明,Dropbox 已经改变了它通过应用程序链接到用户帐户的方式,并且即使您删除了应用程序,也可以链接提醒?有没有其他人有这方面的经验?

应用委托

NSString* appKey = @"00000000000";
NSString* appSecret = @"0000000000";
NSString *root = kDBRootAppFolder;

DBSession* session = 
[[DBSession alloc] initWithAppKey:appKey appSecret:appSecret root:root];
session.delegate = self; // DBSessionDelegate methods allow you to handle re-authenticating
[DBSession setSharedSession:session];

[DBRequest setNetworkRequestDelegate:self];

viewController 中的按钮处理程序

LogCmd();
self.publishButtonPressed = YES;
if (![[DBSession sharedSession] isLinked]) {
    [self loginLogoutButtonPressed:nil];
} else {

    DBRestClient *restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    restClient.delegate = self;
    NSError *error = nil;
    NSString *filePath = [ICUtils pathForDocument:self.fileName];
    [self.pdfData writeToFile:filePath options:0 error:&error];
    if (nil == error) {

        [restClient uploadFile:self.fileName
                        toPath:@"/"
                 withParentRev:nil
                      fromPath:filePath];
    } else {
        [ICUtils raiseAlertWithTitle:@"An error occurred" message:[error localizedDescription]];
    }
 }
}

注意在模拟器上工作正常,问题仅出现在设备上

4

1 回答 1

0

那是因为您对多个应用程序使用相同的密钥。Dropbox 应用通过自定义 URL 方案与您的应用通信 - 以启动您的应用(因为在 iOS 上没有其他方式以编程方式启动应用)。

换句话说,Dropbox 应用程序告诉系统打开“db-yoursecretkey://somemessage”,这会打开该自定义 URL 方案的注册应用程序。不幸的是,您的所有应用程序都使用相同的自定义方案,因为它们都使用相同的密钥,因此系统只会选择一个:很可能是第一个。

但是,您可以授予应用访问 Dropbox 中所有文件夹的权限,从而有效地共享文件夹。因此,没有必要让所有三个应用程序都使用相同的密钥。

于 2013-10-18T00:14:21.297 回答