2

有谁知道如何在 Xcode 上开发的目标 c iPad/iphone 中将 Auth 令牌用于保管箱?我搜索了很多教程,我发现最接近的是:

http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer

但它适用于mac。我想要做的是将所有应用程序用户链接到同一个保管箱帐户(我的)而不显示用于登录的 safari 窗口。

有任何想法吗??

4

1 回答 1

3

这是可能的,但推荐。

警告:这将允许任何人读取/写入您的保管箱帐户(或应用程序文件夹,具体取决于您允许的访问权限)。

我认为您正在按照入门指南中的建议设置您的应用程序: https ://www.dropbox.com/developers/core/authentication#ios

它的工作原理如下:登录 Dropbox 后,您将被重定向回您的应用。Dropbox 通过让您注册一个 URL Scheme 并使用以下 AppDelegate 方法来做到这一点:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

Dropbox在参数中传递oauth_tokenoauth_token_secret和。然后,当您使用以下方法进行 API 调用时,它会保存这些以供以后使用:uidurlDBSession

- (BOOL)handleOpenURL:(NSURL *)url;

因此,您可以创建一个使用相同App KeySecret.

测试应用

DBSession* dbSession =
    [[[DBSession alloc]
      initWithAppKey:@"APP_KEY"
      appSecret:@"APP_SECRET"
      root:ACCESS_TYPE] // either kDBRootAppFolder or kDBRootDropbox
     autorelease];
[DBSession setSharedSession:dbSession];

请求授权

if (![[DBSession sharedSession] isLinked]) {
    [[DBSession sharedSession] linkFromController:yourRootController];
}

然后添加 AppDelegate 方法来接收授权url

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([[DBSession sharedSession] handleOpenURL:url]) {
        if ([[DBSession sharedSession] isLinked]) {
            NSLog(@"App linked successfully! url: %@", url);
            // At this point you can start making API calls
        }
        return YES;
    }
    // Add whatever other url handling code your app requires here
    return NO;
}

这将url使用授权令牌记录。复制它,然后在您的生产应用程序中(在您配置 DBSession 之后)执行此操作(将字符串替换为您之前复制的字符串):

生产应用程序

DBSession* dbSession =
    [[[DBSession alloc]
      initWithAppKey:@"APP_KEY"
      appSecret:@"APP_SECRET"
      root:ACCESS_TYPE] // either kDBRootAppFolder or kDBRootDropbox
     autorelease];
[DBSession setSharedSession:dbSession];

if (![[DBSession sharedSession] isLinked]) {
    [[DBSession sharedSession] handleOpenURL:[NSURL URLWithString:@"db-APP_KEY://1/connect?oauth_token=********&oauth_token_secret=********&uid=********"]];
}

这将自动链接DBSession到您的 Dropbox 帐户。

您可以在授权之前通过调用它来测试它:

[[DBSession sharedSession] unlinkAll];

另一个警告 我可以下载你的应用程序,提取授权令牌,然后开始进行我想要的所有读/写 API 调用。这是完全不安全的,只能被视为一种教育练习。

于 2013-03-22T11:49:32.557 回答