3

我有一个奇怪的问题。我的应用程序应该链接到 Dropbox,并且应该能够上传/下载文件。我有一个名为“连接到 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];

我不知道为什么会发生这种情况或我做错了什么。

问候亚历克斯

4

2 回答 2

5

我有同样的问题。就我而言,我创建了一个restClient链接到 Dropbox 的 before 应用程序实例。可能这有帮助

- (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]];
        }
    }
}
于 2012-12-04T12:14:30.423 回答
0

我的问题是,当 DropBox 用户安装了官方 DropBox 应用程序时,您的应用程序会将身份验证转移到该应用程序,而不是使用内置工作表。如果您的应用程序设置为在不再是关键时退出,那么([DBSession sharedSession])当您的应用程序再次获得焦点(即重新启动)时,共享会话将不再存在。这导致(在我的情况下)导致重新链接、失败、尝试再次重新链接等的无限循环。

对我来说,解决方法是在通话中重新创建共享会话- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

于 2013-01-20T01:20:12.393 回答