当我使用核心API时,我只使用以下代码
[dbsession updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];从应用程序的任何副本访问我的dropbox帐户。但是现在我发现这个新的Sync更简单、更灵活,但是我没有找到与上面显示的代码等价的地方。现在的情况是:
DBAccountManager* accountMgr = [[DBAccountManager alloc] initWithAppKey:@"..." secret:@"..."];
[DBAccountManager setSharedManager:accountMgr];
??[DBAccountManager updateAccessToken:@"..." accessTokenSecret:@"..." forUserId:@"..."];??我怎样才能进入我的帐户?我可以在哪里插入AccessToken?
发布于 2013-12-06 03:38:10
从您的问题来看,DBAccountManager上的这个方法似乎是使用您的appKey和secret的方法
- (id)initWithAppKey:(NSString *)key secret:(NSString *)secret从文档描述中可以看出,这种方法“使用应用程序的密钥和机密,...creates是一个新的帐户管理器。您可以注册应用程序,或者在应用程序页面找到您的密钥。”
在创建DBAccountManager实例并将其设置为使用[DBAccountManager setSharedManager:]的共享管理器之后,可以通过调用此方法登录特定用户:
[[DBAccountManager sharedManager] linkFromController:YOUR_ROOT_CONTROLLER];以下是来自dropbox iOS教程的描述
要开始与同步API交互,您需要创建一个DBAccountManager对象。这个对象允许您链接到Dropbox用户的帐户,这是代表他们处理数据的第一步 “如果安装了...the链接程序,它将切换到Dropbox移动应用程序。一旦用户完成授权步骤,Dropbox将使用设置SDK时注册的URL方案将它们重定向回应用程序。您的应用程序需要处理这些请求才能完成auth流程。”
本教程中提到的最后一步是处理重定向。这里有一些代码可以这样做:
- (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获得,这是一个具有userId和accountInfo等属性的DBAccount。
这里有一个链接到文档供参考。希望这能有所帮助!
更新
看来我误解了你的问题。我正在向您说明如何使用Sync,并且没有明确说明在中实际上并没有为用户的accessToken提供位置。这已经被我上面描述的web流所取代。
发布于 2014-02-06 00:25:43
您可以通过生成dropbox在同步API中使用的回调url来实现您想要的结果。首先,您需要设置dropbox.sync.nonce用户设置,以匹配作为NSURL中的状态参数传入的任何内容。然后将oauth_token、oauth_token_secret和uid参数设置为您以前传递给[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];请注意,状态参数与存储在用户默认值中的值是相同的。请记住,这是无文档化的,可能会在以后的API版本中更改。
https://stackoverflow.com/questions/20224404
复制相似问题