有谁知道如何在 Xcode 上开发的目标 c iPad/iphone 中将 Auth 令牌用于保管箱?我搜索了很多教程,我发现最接近的是:
http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer
但它适用于mac。我想要做的是将所有应用程序用户链接到同一个保管箱帐户(我的)而不显示用于登录的 safari 窗口。
有任何想法吗??
有谁知道如何在 Xcode 上开发的目标 c iPad/iphone 中将 Auth 令牌用于保管箱?我搜索了很多教程,我发现最接近的是:
http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer
但它适用于mac。我想要做的是将所有应用程序用户链接到同一个保管箱帐户(我的)而不显示用于登录的 safari 窗口。
有任何想法吗??
这是可能的,但不推荐。
警告:这将允许任何人读取/写入您的保管箱帐户(或应用程序文件夹,具体取决于您允许的访问权限)。
我认为您正在按照入门指南中的建议设置您的应用程序: https ://www.dropbox.com/developers/core/authentication#ios
它的工作原理如下:登录 Dropbox 后,您将被重定向回您的应用。Dropbox 通过让您注册一个 URL Scheme 并使用以下 AppDelegate 方法来做到这一点:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
Dropbox在参数中传递oauth_token
、oauth_token_secret
和。然后,当您使用以下方法进行 API 调用时,它会保存这些以供以后使用:uid
url
DBSession
- (BOOL)handleOpenURL:(NSURL *)url;
因此,您可以创建一个使用相同App Key
和Secret
.
测试应用
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 调用。这是完全不安全的,只能被视为一种教育练习。