链接到Dropbox

时间:2012-08-21 08:54:11

标签: objective-c ios dropbox

我有一个奇怪的问题。我的应用应该链接到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];

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

问候 亚历

2 个答案:

答案 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调用中重新创建共享会话。