我使用FacebookSDK3从我的(ios)代码将图像上传并发布到用户Facebook,并显示了friendPickerController视图,选择了一个朋友数组,并尝试在照片上附加标签。

这是我用于实际标记的代码,运行正常,但随后我在调试器中收到错误:错误:HTTP状态代码:200,当我在图表上应用stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding时,错误:HTTP状态代码:400路径。它似乎是权限类型错误。.(成功上传图片后调用此方法,self.upLoadedPicID是带有该帖子的fbID的NSString,self.tagList是一个传递回的对象(要标记的面孔)的NSMutableArray来自friendPickerController。

 -(void)tagFriends{

    if ([self.tagList count] > 0 && imageUploaded && [self.upLoadedPicID length]) {
    self.activityLabel.text = @"Tagging Photo";
    [self setSpindicatorOn:YES];

    NSMutableString *graphPath = [NSMutableString string];
    [graphPath appendString:self.upLoadedPicID];
    [graphPath appendString:[NSString stringWithFormat:@"/tags?tags=["]];


    // loopthru tag array..

    NSMutableString *iDs = [NSMutableString string];

    for (id<FBGraphUser> user in self.tagList) {

               if ([iDs length]) {
                [iDs appendString:@", "];
               }  //deliniate after first entry..

      NSString *entry = [NSString stringWithFormat:@"{\"tag_uid\":\"%@\"}", user.id];
      [iDs appendString:entry];
      }


    [graphPath appendString:iDs];[graphPath appendString:[NSString stringWithFormat:@"]&access_token=%@",[FBSession activeSession].accessToken]];
 //  NSLog(@"building graph path for tAgging %@", graphPath);
   //works fine
    FBRequestConnection *connection = [[FBRequestConnection alloc]init];
    FBRequest *request = [FBRequest requestForGraphPath:graphPath];


  // do i need URL encoding???

 //   NSString* escapedUrlString = [graphPath stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
  //  FBRequest *request = [FBRequest requestForGraphPath:escapedUrlString];

   // dont think so..

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

//     if (error) {
//       NSLog(@"error tagging");
       [self setSpindicatorOn:NO];
//     }else{
//       NSLog(@"done tagging");
//       [self setSpindicatorOn:NO];}
//
     [self showAlert:@"done Tagging" result:result error:error];


   } batchEntryName:nil];
    [connection start];
   // [request ]
  }

}


fbSession是在appDelegate中分配的,并在呈现给它之前传递给fbViewcontrollers,所以也许我的问题是我在这里使用的权限吗?我找不到有关在此处使用的备用权限字符串的任何文档。

self.fbLoginView = [[FBLoginView alloc]initWithPermissions:[NSArray arrayWithObject:@"publish_actions"]];


另一种可能是我没有使用正确的权限设置我的facebook终端应用程序,我可以进入并编辑该应用程序,但是它只是一个文本输入,而不是下拉菜单或类似的直观内容,并且我可以找到每个列表的GraphApi权限没有提及为照片添加好友标签,尽管有文档说明在不赞成使用的REST API中还不够,但不清楚GraphApi中的“发布流”权限是否足够,您需要publish_stream_extended权限,但是我不能查看GraphAPI中的任何相应权限。

如果您能告诉我哪里出了问题,我将永远感激不已,如果出现重复的问题,我深表歉意,我一直在寻找,因为REST API已弃用,facebook发行了不同的SDK很难知道什么已经改变,什么还没有改变。

我想关键的问题是否有人知道


在Facebook服务器端应用程序中进行的权限设置是什么,以便可以将朋友标记为照片?
有什么相应的权限可以初始化您的facebook会话对象?
Facebook不想让您这样做吗,这就是为什么文档如此少的原因?
我在这里完全树错了树吗?


非常感谢您阅读本文的时间:)

最佳答案

要求user_photos权限,以便您可以在照片中标记朋友
使用最新的Facebook SDK v3.1,您需要分配读/写权限才能利用iOS6。当您要发布照片时,先请求user_photos权限,然后在上下文中请求publish_actions权限。
可以在此处找到说明权限的文档:https://developers.facebook.com/docs/reference/api/photo/


提示:每当遇到困难时,请转到Graph API Explorer并使用不同的权限,输入等进行操作,以便在继续编写代码之前写好东西,或者在陷入困境时仅使用它。

关于ios - 将Facebuddies标记为已发布的照片​​IOS Facebook SDK 3.0可能存在权限问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12523229/

10-08 23:44