我正在使用Core将dropbox与iOS应用程序集成。我能够认证一个帐户,并成功上传文件。
但是如果经过认证,用户可以从dropbox帐户中删除应用程序文件夹,或者通过dropbox设置卸载应用程序。
之后,如果我试图上传一个文件,整个文件就会被上传(进度从0到1),然后收到一个错误,错误代码-1021对应于NSURLErrorRequestBodyStreamExhausted,nor错误代码401根据https://www.dropbox.com/developers/core/api中的标准API错误。
问题是,这种情况发生在使用iOS 6的设备上,甚至帐户本身也没有断开链接。我有一个带有iOS 5的设备,它获取401的错误代码(但在上传完整个文件之后也是如此),这就是验证错误(错误代码401),正如核心api文档中所解释的那样。而帐户本身就没有链接了。
更新:这个错误已经在最新的dropbox构建中解决了。
发布于 2013-04-14 23:29:51
当您的应用程序启动时,以下代码将立即请求用户Dropbox帐户信息(如果他们当前链接的话)。如果用户删除“应用程序”文件夹,或从Dropbox.com中撤销对应用程序的访问,则在启动应用程序时,用户将立即断开链接。我认为这是一个很好的实践,不管SDK是否有错误,在上传文件时不能返回401。
将此添加到您的应用程序委托didFinishLaunchingWithOptions**method中,在其中初始化Dropbox**
DBSession* dbSession = [[[DBSession alloc] initWithAppKey:DROPBOX_KEY appSecret:DROPBOX_SECRET root:kDBRootAppFolder] autorelease];
[DBSession setSharedSession:dbSession];
if ([[DBSession sharedSession] isLinked]) {
DBRestClient* dbRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
[dbRestClient setDelegate:self];
[dbRestClient loadAccountInfo];
}然后将以下方法添加到应用程序委托中
- (void)restClient:(DBRestClient*)client loadAccountInfoFailedWithError:(NSError*)error {
if (error.code == 401) {
[[DBSession sharedSession] unlinkAll];
}
}https://stackoverflow.com/questions/15637418
复制相似问题