发布带有标签的照片时获取“不支持的 FBSDKGraphRequest 附件”

Posted

技术标签:

【中文标题】发布带有标签的照片时获取“不支持的 FBSDKGraphRequest 附件”【英文标题】:Getting "Unsupported FBSDKGraphRequest attachment" when posting photo with tags 【发布时间】:2015-04-24 18:53:32 【问题描述】:

我一直在尝试使用 FBSDKGraphRequest 上传带有标题和标签的朋友的照片,但我真的很难让标签正常工作。这是我得到的:

NSDictionary *parameters = @
                             @"caption" : message,
                             @"picture" : UIImagePNGRepresentation(image),
                             @"tags"    : @[@@"tag_uid": @902893713061742, @"x":@0.0, @"y":@0.0,
                                            @@"tag_uid": @902486513129784, @"x":@10.0, @"y":@10.0],
                             ;

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphpath:@"me/photos" parameters:parameters tokenString:token.tokenString version:@"v2.3" HTTPMethod:@"POST"];
[connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
    if(error)
        NSLog(@"%@", error);
    else
        NSLog(@"Success");
];
[connection start];

但是每次我尝试运行它都会抛出这个错误:

FBSDKLog:不支持的 FBSDKGraphRequest 附件:( "tag_uid" = 902893713061742; x = 0; y = 0; , "tag_uid" = 902486513129784; x = 10; y = 10; ),跳过。

我已经尝试了几种不同的方法来附加 @"tags" 信息,但没有一种方法能完成这项工作。有谁知道这样做的正确方法?这甚至可能吗? https://developers.facebook.com/docs/graph-api/reference/user/photos/ 让我这么想。

编辑:尝试在没有标签的情况下发布,然后用它们更新帖子 ID,但仍然没有成功:(

【问题讨论】:

【参考方案1】:

您不能使用相同的 FBSDKGraphRequest 上传带有标题和标记朋友的照片。您必须为不同的任务调用不同的方法,如下所示:

对于像标题和标签这样的消息:

if ([FBSDKAccessToken currentAccessToken])
 NSDictionary *params = @
                        @"message": @"This is a test message",
                       ;
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/feed" parameters:params HTTPMethod:@"POST"]startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
        if (error)
         NSLog(@"error:%@", error);
        else
            UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"FBSDKGraphRequest" message:@"Text Shared successfully..!" delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil, nil];
            [av show];
            
 ];

发布照片:

if ([FBSDKAccessToken currentAccessToken])
NSDictionary *params = @@"sourceImage":UIImagePNGRepresentation(pickedImage);
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/photos" parameters:params HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
    if (!error) 
        UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"FBSDKGraphRequest" message:@"Image Shared successfully..!" delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil, nil];
        [av show];
     else 
        NSLog(@"Graph API Error: %@", [error description]);
    
  ];

希望对您有所帮助...:)

【讨论】:

感谢您的回答,但这仍然不能解决我的问题。我想发布一张照片并在同一个帖子中标记几个朋友。不过没关系,这似乎根本不适用于当前版本的 Graph API。 Instagram 确实做到了这一点,我不知道是怎么做到的,这让我有点难过。【参考方案2】:

您可以上传带有标题的照片,只需将“标题”键更改为“消息”

if FBSDKAccessToken.currentAccessToken().hasGranted("publish_actions") 
     let params: [NSObject : AnyObject] = ["message": "Caption", "sourceImage" : UIImagePNGRepresentation(image)]
     FBSDKGraphRequest(graphPath: "me/photos", parameters: params, HTTPMethod: "POST").startWithCompletionHandler( (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
            // Handle result
     )

【讨论】:

【参考方案3】:

这是帮助您入门的基本代码:

if (![FBSDKAccessToken currentAccessToken]) 
            [self alertWithMessage:@"Log into FB and request publish_actions" title:@"Upload Failed"];
            return;
        
NSDictionary *params = @@"source":UIImagePNGRepresentation([UIImage imageNamed:@"snoopy.png"]);

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/photos" parameters:params HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
            if (!error) 
                [self alertWithMessage:[NSString stringWithFormat:@"Result: %@", result] title:@"Post Photo Success!"];
             else 
                NSLog(@"Graph API Error: %@", [error description]);
            
        ];

这保证可以工作,因为我自己测试过。请记住检查您拥有的访问令牌是否具有 publish_actions 权限,因为这也可能会影响您是否可以上传人们的图片。

【讨论】:

但此方法不沿图像共享文本。

以上是关于发布带有标签的照片时获取“不支持的 FBSDKGraphRequest 附件”的主要内容,如果未能解决你的问题,请参考以下文章

从 Instagram 获取所有带有 PHP 特定标签的照片 [关闭]

从多对多关系中获取核心数据

android使用片段从相机或画廊获取照片[重复]

带有 SwiftUI 的标签栏上方的额外导航视图

Facebook Graph API - 按用户标签获取照片

从照片 SwiftUI 中获取图像时内存不足