我正试图从我的iOS应用程序中显示facebook分享对话框。
此代码打开Facebook应用程序并显示对话框:
FBShareDialogParams* params = [[FBShareDialogParams alloc] init];
params.link = urlToShare;
params.name = @"Test";
params.description = @"Description";
params.picture = [NSURL URLWithString:FB_IMG_URL];
BOOL canPresentShareDialog = [FBDialogs canPresentShareDialogWithParams:params];
if (canPresentShareDialog) {
[FBDialogs presentShareDialogWithParams:params clientState:nil handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
if (error) {
if ([FBErrorUtility shouldNotifyUserForError:error]) {
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Facebook-Error!" message:[FBErrorUtility userMessageForError:error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
} else {
NSLog(@"SUCCESS");
}
}];
}
在完成处理程序中,我想知道用户是否取消了操作。结果词典应该告诉我。但是我只在字典中获得didComplete=YES
而不是completionGesture
。 NSError
对象始终为nil
。
结果字典在此解释:https://developers.facebook.com/ios/share-dialog/
所以问题是我无法判断帖子是否成功。
我的代码有问题吗?
答案 0 :(得分:2)
如果我没有错,那么你想知道用户是否由于某些错误或者按下取消按钮而无法在Facebook上发布数据。如果是这种情况,那么使用下面给出的代码
[FBDialogs presentShareDialogWithParams:shareParams
clientState:nil
handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
if(error) {
NSLog(@"Error publishing story.");
} else if (results[@"completionGesture"] && [results[@"completionGesture"] isEqualToString:@"cancel"]) {
NSLog(@"User canceled story publishing.");
} else {
NSLog(@"Story published.");
}
}];
取自Facebook Developer Reference。如果有帮助,请告诉我。感谢
答案 1 :(得分:2)
如文档中所述,“completionGesture”字段“仅在用户登录您的应用时才可用”。
因此,如果用户以前从未在您的应用中使用Facebook登录,则您将无法获得该字段,并且只会看到“didComplete”字段。