3

我正在向我的 iOS 应用程序添加 Dropbox 支持。使用官方的 Dropbox API 和 在线教程,我已经到了需要对 Dropbox 进行身份验证的地步。下面的代码是按下按钮时为 Authenticate 提供的代码:

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

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

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

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

整个教程、所有文档、api 等都可以在此处获得。

4

3 回答 3

5

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

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

一旦被称为链接工作正常。

于 2012-10-15T14:17:06.277 回答
1

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

于 2012-08-01T04:46:04.927 回答
0

你的观点是否实现了<DBLoginControllerDelegate>

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

DBLoginController* controller = [[DBLoginController new] autorelease];
        controller.delegate = self;
        [controller presentFromController:self];
于 2012-03-31T15:25:20.130 回答