【问题标题】:Post image on facebook using FBSDK 4.x for iOS使用适用于 iOS 的 FBSDK 4.x 在 Facebook 上发布图片
【发布时间】:2015-07-30 19:51:11
【问题描述】:

对于新的Facebook SDK 4.x (4.1) for iOS,框架有新的变化。它包括 3 个不同的框架,就像

  • 核心
  • 分享
  • 登录。

分享我使用FBSDKSharePhoto Class 的任何图像。但它有方法

[FBSDKSharePhoto photoWithImage:(*UIImage) userGenerated:(BOOL)]

我想用图像作为字符串和文本添加标题。任何人都可以帮我解决这个问题,这样我就可以使用 FB 的新 sdk 发布带有图片的标题。

提前致谢。

【问题讨论】:

  • 你有没有使用FBSDK的解决方案?

标签: ios xcode facebook facebook-sdk-4.0


【解决方案1】:

正如@NANNAV 发布的那样,它会起作用,但如果您想在没有任何 FB 对话屏幕的情况下静默分享,请使用“shareWithContent”,如下所示,但您需要提交您的 Facebook 应用以供审核。

Obj-c 中的代码

FBSDKSharePhoto *sharePhoto = [[FBSDKSharePhoto alloc] init];
sharePhoto.caption = @"Test Caption";
sharePhoto.image = [UIImage imageNamed:@"BGI.jpg"];

FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
content.photos = @[sharePhoto];

[FBSDKShareAPI shareWithContent:content delegate:self];

Swift 中的代码

var sharePhoto = FBSDKSharePhoto()
sharePhoto.caption = "Test"
sharePhoto.image = UIImage(named: "BGI.jpg")

var content = FBSDKSharePhotoContent()
content.photos = [sharePhoto]

FBSDKShareAPI.shareWithContent(content, delegate: self)

【讨论】:

  • 感谢您的回答,但这需要扩展权限以及来自 fb 应用程序的权限。
  • @Esha 是的,您需要 publishPermissions : "publish_actions" 才能使其工作。
  • 对于这个新的 SDK,我还有一个问题是无法获得 Publish_action 权限。它总是进入取消块。虽然 openUrl、活动应用和启动选项方法都设置了。
  • 您可以在创建 facebook 应用程序时获得发布和其他类型的权限,并在您的权限由 facebook 团队授予后尝试查看您对该应用程序的权限,您可以在您的 ios 中使用该应用程序 ID app..继续编码
  • 我正在使用 QA 版本的应用程序,但仍然要求 [FBSDKAccessToken currentAccessToken] 缺少 publish_actions 权限
【解决方案2】:

将您的标题字符串分配给标题键值

@property (nonatomic, copy) NSString *caption;

试试这个:

 FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
      photo.image = image;
      photo.userGenerated = YES;
    photo.caption = @"Add Your caption";
      FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
      content.photos = @[photo];
    [FBSDKShareDialog showFromViewController:self
                                 withContent:content
                                    delegate:nil];

【讨论】:

  • 很好的答案,当我将我的代码从 swift 转换为 obj-c 时,我看到了你的帖子。 +1
  • 它显示对话框,并在添加了在 facebook 上发布的文本后。但添加的标题没有显示在帖子上....请检查
  • 你好@Esha我和你一样面临同样的问题,你有什么解决办法然后请告诉我。
【解决方案3】:

添加以下代码以使用 Facebook SDK 4.x 将文本分享到 facebook

 FBSDKGraphRequestConnection *connection  =[[FBSDKGraphRequestConnection alloc]init];

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Your_message_here_to_share_FB", @"message",
                               nil];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/feed" parameters:params HTTPMethod:@"POST"];
[connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if(error){
           NSLog(@"Failed to share");
        }
    else{
           NSLog(@"Updated successfully");

        }

}];

*添加以下代码以分享照片。

FBSDKGraphRequestConnection *connection  =[[FBSDKGraphRequestConnection alloc]init];

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: image, @"picture",
                               @"Your_text_here",@"message",
                               nil];

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/photos" parameters:params HTTPMethod:@"POST"];

[connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

    if(result)
    {
        NSLog(@"Posting the image is success, the result is%@",result);
    }
    else if(error)
    {
        NSLog(@"Error occured while posting image %@",error);
    }
}];

[connection start];

【讨论】:

  • 在使用图发布之前必须检查 publish_action 权限
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2015-08-27
相关资源
最近更新 更多