我正在将Facebook集成到我的应用程序中以共享网站链接。我正在使用 Feed 对话框来完成此操作,并且我正在关注本教程:
https ://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ 。
我已经成功登录并发布到 Facebook,但我想在发布成功后添加一条消息。该教程内置了这个,但每次我发布时,我都会在日志中看到“用户取消故事发布。 ”这是用户单击取消时显示的消息。此外,我已经通过调试器确认resultURL
处理程序收到的参数始终为零,即使在成功发布时也是如此。
起初我认为这是我的配置问题Facebook App
,但我决定进行测试。我打开了RPSSample
框架附带的,在视图控制器中的方法presentRequestsDialogModallyWithSession
调用中添加了一个完成处理程序,我也在那里获得了成功的帖子。clickInviteFriends
RPSFriendsViewController.m
resultURL
我错过了什么?
我知道 3.5 SDK 版本非常新,但根据文档,我应该resultURL
在通过Facebook 网络对话框发布后获得一个有效的参数,所以我不确定它是否是一个错误,或者我是否在某处遗漏了一些回调或处理程序.
以防万一,这是我对Feed Web Dialog的调用。与教程中的相比,它有细微的变化(实际上更简单)
- (void)publish: (EntityToShare *)entityToShare {
NSMutableDictionary *params =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
entityToShare.link, @"link",
nil];
// Invoke the dialog
[FBWebDialogs presentFeedDialogModallyWithSession:nil
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
// Error launching the dialog or publishing a story.
NSLog(@"Error publishing story.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
// User clicked the "x" icon
NSLog(@"User canceled story publishing.");
} else {
// Handle the publish feed callback
NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
if (![urlParams valueForKey:@"post_id"]) {
// User clicked the Cancel button
NSLog(@"User canceled story publishing.");
} else {
// User clicked the Share button
NSString *msg = [NSString stringWithFormat:
@"Posted story, id: %@",
[urlParams valueForKey:@"post_id"]];
NSLog(@"%@", msg);
// Show the result in an alert
[[[UIAlertView alloc] initWithTitle:@"Result"
message:msg
delegate:nil
cancelButtonTitle:@"OK!"
otherButtonTitles:nil]
show];
}
}
}
}];
}