如何代表用户将照片发布到 Facebook

Posted

技术标签:

【中文标题】如何代表用户将照片发布到 Facebook【英文标题】:How to post photo to Facebook on behalf of user 【发布时间】:2015-03-03 21:21:29 【问题描述】:

作为用户在我的应用中执行某些操作的事件,我想代表他们将图片发布到 Facebook。假设用户已经在类 LoginVC 中授予了我 publish_actions 权限(一次权限用于将来无限发布)。然后在将来的某个时候,在 ActionVC 中,我想将照片发布到 Facebook。我怎么做?这是我需要实现的方法:

- (void)publishPhoto:(UIImage *)image

  //what goes in here?

到目前为止,我一直在查看来自 Facebook 的样本。我最接近的是以下,但它似乎正在使用一个对话框。但我不希望用户“知道”照片正在发布。他们已经授予了许可,我希望在他们不知情的情况下发布。所以其他一些动作触发了发布的调用......

作为参考,Facebook 示例中的代码如下所示

- (void)publishPhoto:(UIImage *)image

    BOOL canPresent = [FBDialogs canPresentShareDialogWithPhotos];
    NSLog(@"canPresent: %d", canPresent);

    FBPhotoParams *params = [[FBPhotoParams alloc] init];
    params.photos = @[image];

    BOOL isSuccessful = NO;
    if (canPresent) 
        FBAppCall *appCall = [FBDialogs presentShareDialogWithPhotoParams:params
                                                              clientState:nil
                                                                  handler:^(FBAppCall *call, NSDictionary *results, NSError *error) 
                                                                      if (error) 
                                                                          NSLog(@"Error: %@", error.description);
                                                                       else 
                                                                          NSLog(@"Success!");
                                                                      
                                                                  ];
        isSuccessful = (appCall  != nil);
    

    if (!isSuccessful) 
        [self performPublishAction:^
            FBRequestConnection *connection = [[FBRequestConnection alloc] init];
            connection.errorBehavior = FBRequestConnectionErrorBehaviorReconnectSession
            | FBRequestConnectionErrorBehaviorAlertUser
            | FBRequestConnectionErrorBehaviorRetry;

            [connection addRequest:[FBRequest requestForUploadPhoto:image]
                 completionHandler:^(FBRequestConnection *innerConnection, id result, NSError *error) 
                     [self showAlert:@"Photo Post" result:result error:error];
                     if (FBSession.activeSession.isOpen) 
                         self.buttonPostPhoto.enabled = YES;
                     
                 ];
            [connection start];

            self.buttonPostPhoto.enabled = NO;
        ];
    

对不起,如果这个问题看起来太简单了,但我是 Facebook SDK 集成的新手

【问题讨论】:

【参考方案1】:

一般来说,您肯定希望用户知道正在代表他们发布某些内容,但要回答您的问题,如果他们已经授予您发布权限,那么您可以使用第二个“if”语句中的代码你在上面发布的,它调用FBRequest requestForUploadPhoto:

【讨论】:

嗨@MingLi 你似乎对Facebook 的东西很精通,你能帮我登录吗?我写了代码,但它不起作用***.com/questions/28843758/…

以上是关于如何代表用户将照片发布到 Facebook的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vanilla javascript 通过 ajax 将多张照片上传到 Laravel 应用程序?

IOS如何获取Facebook扩展权限对话框

如何检查项目是不是存在于多个数组中

如何在ios中删除照片的图像?

如何从测试用户那里检索 Facebook 照片?

如何将照片库中的图像保存到应用程序的文档文件夹