2012-03-31 45 views
3

我将Dropbox支持添加到我的iOS应用程序。使用官方的Dropbox API和教程online here我已经到了Dropbox需要认证的地步。下面的代码是什么给予​​验证,当按下按钮:在iOS中验证Dropbox

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

但不管我怎么更改代码,在那里我把它还是什么按钮,我将其链接到,什么都不会发生。使用断点我发现该方法事实上被触发。我甚至把它放在IBAction中,但是这给出了相同的结果。我究竟做错了什么? 如何让我的应用程序对最终用户进行身份验证?

而且,一旦验证,如何将NSString保存到用户的Dropbox?

如果这是完全错误的,那么我可以去哪里寻找资源,如何正确地做到这一点?

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

+0

如果你在这个方法的开始放置一个断点,它会被触发吗? – 2012-04-04 01:56:38

+0

@quixoto是的,它确实通过断点触发 – 2012-04-04 01:59:22

+1

检查您是否在info.plist中提供了应用程序密钥? 您的应用程序密钥也需要Info.plist文件,所以应用程序可以注册正确的url方案 – Bala 2012-04-04 10:47:35

回答

5

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

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

一旦被调用的链接工作得很好。

0

您的看法是否实施了<DBLoginControllerDelegate>

如果是这样,Dropbox的链接像这样:

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

嗯....你确定是正确的,因为即使所有正确的头导入我仍然得到错误:“无法找到协议声明” – 2012-03-31 15:37:12

+0

我相信他指的是'DBRestClientDelegate'协议。另外,你在哪里调用didPressLink方法?您可能需要向我们提供更多代码。 – serb 2012-03-31 17:00:59

+0

我确定,因为我为我们的应用程序Securis做了这个。 – 2012-04-01 03:04:33

1

这个答案可能会迟到,但即时通讯猜你之前已经联系您的应用程序,并希望再次这样做。如果您运行以下代码,则可以让链接进程再次发生的唯一方法是: [[DBSession sharedSession] unlinkAll]; 你可以把它放在你的viewDidLoad中。然后,当您打电话给didPressLink时:应用程序应打开Dropbox应用程序(如果可用),Safari或应用程序窗口要求您获得访问Dropbox的权限。如果这没有发生,那么问题就在别的地方。希望这可以帮助