在iOS中验证Dropbox身份认证

3

我正在将Dropbox支持添加到我的iOS应用程序中。使用官方的Dropbox API和这里在线的教程,我已经达到了需要进行Dropbox认证的步骤。下面的代码是在按下按钮时给出的身份验证代码:

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

无论我如何更改代码,将其放置在哪里或链接到哪个按钮,都不会发生任何事情。使用断点,我发现该方法确实被触发。我甚至将其放在了IBAction中,但结果相同。我做错了什么?如何让我的应用程序对终端用户进行身份验证?
一旦经过身份验证,如何将NSString保存到用户的Dropbox中?
如果这完全错误,那么我可以去哪里找到有关如何正确执行此操作的资源?
整个教程,所有文档,api等都可在此处找到。

如果您在此方法的开头设置断点,它是否会被触发? - Ben Zotto
@quixoto 是的,它会在断点被触发时被触发。 - Sam Spencer
1
请检查您是否在info.plist中提供了应用程序密钥? 您的应用程序密钥也需要在Info.plist文件中,以便应用程序可以注册正确的URL方案。 - Bala
3个回答

5
我遇到了同样的问题,原因是我没有设置共享的Dropbox会话,例如:
DBSession* dbSession = [[[DBSession alloc] initWithAppKey: @"your_app_key"
                                           appSecret: @"your_app_secret"
                                           root: kDBRootAppFolder] autorelease];
[DBSession setSharedSession: dbSession];

一旦将其称为链接,链接就可以正常工作。

1

这个回答可能有点晚了,但我猜你已经链接过你的应用程序并想再次这样做。你可以通过运行以下代码来重新进行链接: [[DBSession sharedSession] unlinkAll]; 你可以将它放在你的viewDidLoad中。当你调用didPressLink:时,应用程序应该打开Dropbox应用程序(如果可用),Safari或一个应用内窗口,要求你允许访问你的Dropbox。如果这没有发生,那么问题就出在其他地方。希望这可以帮助到你。


0

你的视图是否实现了 <DBLoginControllerDelegate> 接口?

如果是这样,请按照以下方式链接 Dropbox:

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

嗯...你确定<DBLoginControllerDelegate>是正确的吗?即使导入了所有正确的头文件,我仍然会收到错误信息:"找不到协议声明"。 - Sam Spencer
我相信他指的是DBRestClientDelegate协议。另外,你从哪里调用了didPressLink方法?你可能需要提供更多的代码。 - serb
我很确定,因为我为我们的应用程序Securis做过这个。 - PRNDL Development Studios
@serb,didPressLink方法是从MainViewController.m中调用的。 - Sam Spencer
我认为登录控制器的内容来自于较旧版本的DB SDK。现在应该足够使用 sharedSession 的链接了。 - Ben Zotto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接