我有一个奇怪的问题。我的应用应该链接到Dropbox,应该能够上传/下载文件。我有一个Button calles“Connect to Dropbox”。按下此按钮后,应用程序应链接到Dropbox。
- (IBAction)btnLoginClick:(id)sender {
[[DBSession sharedSession] linkFromController:self];
}
调用此操作时一切正常。 Dropbox.app已加载并请求权限等。
如果我将功能更改为如下所示:
- (IBAction)btnLoginClick:(id)sender {
[[appDelegate getDropboxService] link:self];
}
然后Dropbox.app被打开并被要求获得许可,但该应用程序未链接到Dropbox。
我收到以下错误:
[WARNING] DropboxSDK: error making request to /1/metadata/dropbox - Token is invalid.
仅限appDelegate中的函数返回Dropbox对象,如果它是nil,则会创建它。 Link函数只调用第一个代码块中的同一行。
[[DBSession sharedSession] linkFromController:self];
我不知道为什么会发生这种情况或我做错了什么。
问候 亚历
答案 0 :(得分:4)
我有同样的问题。在我的情况下,我在应用程序链接到Dropbox之前创建了restClient
的实例。可能有帮助
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if ([[DBSession sharedSession] handleOpenURL:url]) {
if ([[DBSession sharedSession] isLinked]) {
NSLog(@"App linked successfully!");
//now you can call restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
}
}
}
答案 1 :(得分:0)
我的问题是,当DropBox用户安装了官方DropBox应用程序时,您的应用程序会将身份验证转移到该应用程序,而不是使用内置工作表。如果您的应用设置为在不再是密钥时退出,则当您的应用再次获得焦点时(即重新启动),共享会话([DBSession sharedSession])
将不再存在。这导致(在我的情况下)无限循环的重新链接,失败,再次尝试重新链接等等。
我的修复方法是在- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
调用中重新创建共享会话。