我使用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/