当我使用核心API时,我只使用了代码
[dbsession updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];
从应用的任何副本访问我的保管箱帐户。但现在我发现这个新的Sync API更简单,更灵活,但我没有找到任何与上面显示的代码等效的内容。现在是:
DBAccountManager* accountMgr = [[DBAccountManager alloc] initWithAppKey:@"..." secret:@"..."];
[DBAccountManager setSharedManager:accountMgr];
??[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];??
如何访问我的帐户?我在哪里可以插入AccessToken?
答案 0 :(得分:3)
根据您的问题,DBAccountManager
上的此方法似乎是使用appKey
和secret
的方法:
- (id)initWithAppKey:(NSString *)key secret:(NSString *)secret
从文档说明中,它说这个方法“...使用您应用的应用密钥和秘密创建一个新的客户经理。您可以在应用页面注册您的应用或找到您的密钥。”
创建DBAccountManager
的实例并使用[DBAccountManager setSharedManager:]
将其设置为共享管理器后,您可以通过调用此方法登录特定用户:
[[DBAccountManager sharedManager] linkFromController:YOUR_ROOT_CONTROLLER];
的说明
“要开始与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
具有accountInfo
和accessToken
等属性。
这是一个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版本中更改。