Dropbox Sync API AccessToken

时间:2013-11-26 17:51:42

标签: ios dropbox

当我使用核心API时,我只使用了代码

[dbsession updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];

从应用的任何副本访问我的保管箱帐户。但现在我发现这个新的Sync API更简单,更灵活,但我没有找到任何与上面显示的代码等效的内容。现在是:

DBAccountManager* accountMgr = [[DBAccountManager alloc] initWithAppKey:@"..." secret:@"..."];
[DBAccountManager setSharedManager:accountMgr];

??[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];??

如何访问我的帐户?我在哪里可以插入AccessToken?

2 个答案:

答案 0 :(得分:3)

根据您的问题,DBAccountManager上的此方法似乎是使用appKeysecret的方法:

- (id)initWithAppKey:(NSString *)key secret:(NSString *)secret

从文档说明中,它说这个方法“...使用您应用的应用密钥和秘密创建一个新的客户经理。您可以在应用页面注册您的应用或找到您的密钥。”

创建DBAccountManager的实例并使用[DBAccountManager setSharedManager:]将其设置为共享管理器后,您可以通过调用此方法登录特定用户:

[[DBAccountManager sharedManager] linkFromController:YOUR_ROOT_CONTROLLER];

以下是dropbox iOS tutorial

的说明
  

“要开始与Sync API交互,您需要创建一个DBAccountManager对象。此对象允许您链接到Dropbox用户的帐户,这是代表他们处理数据的第一步”

     

“...如果安装了Dropbox移动应用程序,链接过程将切换到Dropbox移动应用程序。一旦用户完成授权步骤,Dropbox将使用您在设置时注册的URL方案将其重定向回您的应用程序SDK。您的应用需要处理这些请求以完成身份验证流程。“

本教程中提到的最后一步是处理重定向。以下是一些代码:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)source annotation:(id)annotation {
    DBAccount *account = [[DBAccountManager sharedManager] handleOpenURL:url];
    if (account) {
        NSLog(@"App linked successfully!");
        return YES;
    }
}

现在可以通过[DBAccountManager sharedManager].linkedAccount DBAccount获取用户的帐户信息,该userId具有accountInfoaccessToken等属性。

这是一个link to the docs供参考。希望这有帮助!

更新

似乎我可能误解了你的问题。我将向您提供有关如何使用Sync API的说明,但并未明确说明API中的用户{{1}}实际上存在位置。这已经被我在上面描述的网络流程所取代。

答案 1 :(得分:0)

您可以通过生成dropbox在同步API中使用的回调网址来实现您的目标。首先,您需要设置dropbox.sync.nonce用户设置以匹配您传入的任何内容作为NSURL中的状态参数。然后将oauth_token,oauth_token_secret和uid params与您曾经传递到[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];的内容一起设置。见下文:

  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  [userDefaults setObject:@"9b0aa24b0bd50ce3a1a904db9d309c50"
                   forKey:@"dropbox.sync.nonce"];
  [userDefaults synchronize];

  NSURL *url =
      [NSURL URLWithString:@"db-APP_KEY://1/connect?
oauth_token=updateAccessToken&
oauth_token_secret=accessTokenSecret&
uid=forUserId&
state=9b0aa24b0bd50ce3a1a904db9d309c50"];    

  [[UIApplication sharedApplication] openURL:url];

注意state参数如何与用户默认值中存储的值相同。请记住,这是未记录的,可能会在以后的API版本中更改。