在iOS中验证Dropbox

时间:2012-03-31 15:21:08

标签: objective-c ios authentication dropbox dropbox-api

我正在为我的iOS应用程序添加Dropbox支持。使用官方的Dropbox API和教程online here我已经到了Dropbox需要进行身份验证的程度。下面的代码是按下按钮时认证的内容:

//MainViewController.m
....
@implementation CryptoMainViewController
.....
#pragma mark - Dropbox
- (void)didPressLink {
    if (![[DBSession sharedSession] isLinked]) {
        [[DBSession sharedSession] link];
    }
}

但无论我如何更改代码,我把它放在哪里或者我将它链接到哪个按钮,都不会发生任何事情。使用断点我发现该方法事实上已被触发。我甚至把它放在IBAction中,但这给出了相同的结果。我究竟做错了什么? 如何让我的应用验证最终用户?

并且,经过身份验证后,如何将NSString保存到用户的Dropbox?

如果这完全错了,那么我在哪里可以找到有关如何正确执行此操作的资源?

整个教程,所有文档,api等都可用here

3 个答案:

答案 0 :(得分:5)

我有同样的问题;原因是我没有设置共享的Dropbox会话,例如

DBSession* dbSession = [[[DBSession alloc] initWithAppKey: @"your_app_key"
                                           appSecret: @"your_app_secret"
                                           root: kDBRootAppFolder] autorelease];
[DBSession setSharedSession: dbSession];

一旦调用该链接就可以了。

答案 1 :(得分:1)

这个答案可能会迟到,但我猜你之前已经关联了你的应用,并希望再次这样做。您可以再次进行链接过程的唯一方法是运行以下代码:   [[DBSession sharedSession] unlinkAll]; 您可以将它放在viewDidLoad中。当您再调用didPressLink时:应用程序应该打开Dropbox应用程序(如果可用),safari或应用程序窗口,要求您允许访问您的Dropbox。如果没有发生这种情况,则问题出在其他地方。希望这有帮助

答案 2 :(得分:0)

您的视图是否实现了<DBLoginControllerDelegate>

如果是这样,请链接Dropbox,如下所示:

DBLoginController* controller = [[DBLoginController new] autorelease];
        controller.delegate = self;
        [controller presentFromController:self];