我有一个iPhone应用程序,允许用户录制视频,我希望他们能够在Facebook上分享这些视频。
但是,除非用户决定分享,否则我不希望他/她被重定向到Facebook。我已经尝试过Facebook iOS教程中提供的方法,它要求用户重定向到Facebook并在应用启动后立即进行身份验证。
这是不必要的。
我想要做的是拥有一个“分享”按钮,该按钮允许用户进行身份验证,然后使用POST
请求立即自动上传视频。
这可能吗?有没有人取得类似的效果?
感谢。
答案 0 :(得分:3)
我不确定您正在查看哪个教程,但它可能让您在启动时作为演示进行身份验证。
在您的应用中,您可以在保存视频后通过类似的方式授权您的应用
// Share button action
- (IBAction)sharePressed {
// If user is already authenticated
if ([facebook isSessionValid]) {
[self shareLinkToFacebook];
} else {
// Authenticate with just email permissions
NSArray* permissions = [NSArray arrayWithObjects:
@"email", nil];
[facebook setSessionDelegate:self];
[facebook authorize:permissions];
}
}
- (void) shareLinkToFacebook {
// Create a simple post
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setValue:[video url] forKey:@"link"];
[params setValue:[video title] forKey:@"name"];
[params setValue:@"description" forKey:@"description"];
[facebook dialog:@"feed" andParams:params andDelegate:self];
}
// FBSessionDelegate
- (void) fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:kFBAccessToken];
[defaults setObject:[facebook expirationDate] forKey:kFBExpirationDateKey];
[defaults synchronize];
[self shareLinkToFacebook];
}
你将不得不通过Facebook进行身份验证以获取访问密钥 - 没有办法解决这个问题。
答案 1 :(得分:0)
你无法做你想做的事。要发布内容,您必须拥有有效的access_token。实现此目的的唯一方法是遵循您在官方示例中看到的登录过程。
答案 2 :(得分:0)
这个问题的答案在于创建一个同时作为FBSessionDelegate
和FBRequestDelegate
运行的单例,并允许您在程序周围传递Facebook
的一个实例。
我打电话给我的单身FacebookVideoUploader
,在我的app委托中,我打电话给:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[[FacebookVideoUploader sharedInstance] facebook] handleOpenURL:url];
就是这样。这使得app委托变得整洁,让单身人员处理委托方法。
在我的视图控制器的实现文件中处理视频上传:
就是这样。所有委托和会话方法以及postVideoToFacebook都在FacebookVideoUploader
单例中处理。
这样我的用户就可以登录我的应用,而无需重定向到Facebook,并在他们决定分享视频后立即进行身份验证。