1

我有一个 iPhone 应用程序允许用户录制视频,我希望他们能够在 Facebook 上分享这些视频。

但是,除非用户决定分享,否则我不希望他/她被重定向到 Facebook。我已经尝试过 Facebook iOS 教程中提供的方法,它要求用户在应用启动后立即重定向到 Facebook 并进行身份验证。

那是不必要的。

我想做的是有一个“分享”按钮,允许用户进行身份验证,然后使用POST请求自动上传视频。

这可能吗?有没有人达到类似的效果?

谢谢。

4

3 回答 3

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 进行身份验证才能获得访问密钥 - 没有办法解决这个问题。

于 2012-06-22T17:57:24.597 回答
0

你不能做你想做的事。要发布某些内容,您必须拥有有效的 access_token。实现这一点的唯一方法是遵循您在官方示例中看到的登录过程。

于 2012-06-23T12:49:09.810 回答
0

这个问题的答案在于创建一个同时作为 theFBSessionDelegate和 the运行的单例,并允许您在程序周围FBRequestDelegate传递一个实例。Facebook

我打电话给我的单例FacebookVideoUploader,并在我的应用程序委托中打电话:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[[FacebookVideoUploader sharedInstance] facebook] handleOpenURL:url];

就是这样。这使应用程序委托保持整洁,让单例处理委托方法。

在我处理视频上传的视图控制器的实现文件中,我放了:

  • (IBAction)shareWithFacebook:(UIButton *)sender { [[FacebookVideoUploader sharedInstance] postVideoToFacebook]; }

就是这样。所有的委托和会话方法以及 postVideoToFacebook 都在FacebookVideoUploader单例中处理。

这允许我的用户登录我的应用程序而不会被重定向到 Facebook,并让他们在决定要共享视频后立即进行身份验证。

于 2012-06-25T21:08:00.963 回答