我使用 FacebookSDK3 从我的(ios)代码上传和发布图像到用户 Facebook,并呈现一个friendPickerController 视图,选择一组朋友并尝试将标签附加到图片。
这是我用于实际标记的代码,它运行正常,但随后在调试器中出现错误,Error: HTTP status code: 200 ,当我将 stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding 应用于图形时,它是Error: HTTP status code: 400小路。好像是权限类型错误..(这个方法在图片上传成功后调用,self.upLoadedPicID是NSString和帖子的fbID,self.tagList是一个NSMutableArray对象(facebuddies to tag)传回来从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 权限没有提到将朋友标记到照片,它不清楚 GraphApi 中的“发布流”权限是否足够,尽管有文档表明它在已弃用的 REST API 中还不够,你需要一个 publish_stream_extended 权限,但我不能查看 GraphAPI 中的任何相应权限。
如果你们中的任何人能告诉我哪里出了问题,我将永远感激不尽时间很难看出什么发生了变化,什么没有发生变化。
如果有人知道,我想关键问题是
- 为了有权将朋友标记到照片,在 Facebook 服务器端应用程序中进行哪些权限设置?
- 初始化到您的 facebook 会话对象的相应权限是什么?
- Facebook 是否不再希望您这样做,这就是文档如此少的原因吗?
- 我在这里完全吠错了树吗?
非常感谢您抽出宝贵时间阅读本文:)