我有三个将文件上传到Dropbox的应用。这三个代码相同。它们都共享相同的文件夹,因此我使用了相同的密钥等
这是奇怪的地方
1。一切都很好几个月
2。现在,在用户尝试登录的应用2和3上打开第一个应用?
3。退出,没有任何帮助,只是说Theres连接到Dropbox时出错并稍后再试
我尝试了什么
为所有三个应用程序创建单独的密钥等,然后共享相同的内容,仍然会得到相同的行为?
对此的一些研究表明Dropbox已经改变了通过应用程序链接到用户帐户的方式,即使您删除应用程序也链接了提醒?还有其他人有过这方面的经验吗?
的appDelegate
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]];
}
}
}
注意在模拟器上运行正常,问题仅存在于设备上
答案 0 :(得分:0)
这是因为您对多个应用程序使用相同的密钥。 Dropbox应用程序通过自定义URL方案与您的应用程序进行通信 - 启动您的应用程序(因为没有其他方法可以在iOS上以编程方式启动应用程序)。
换句话说,Dropbox应用程序告诉系统打开“db-yoursecretkey:// somemessage”,打开该自定义URL方案的注册应用程序。不幸的是,您的所有应用程序都使用相同的自定义方案,因为它们都使用相同的密钥,因此系统只选择一个:很可能是第一个。
但是,您可以授予您的应用访问Dropbox中所有文件夹的权限,从而有效地共享文件夹。因此,并不是真的有必要让所有三个应用程序使用相同的密钥。