检查发布到 Facebook 提要的成功与否

Posted

技术标签:

【中文标题】检查发布到 Facebook 提要的成功与否【英文标题】:Checking the success of a posting to Facebook feed 【发布时间】:2011-06-01 17:45:45 【问题描述】:

在我的应用中,用户可以发布到他的 Facebook 订阅源,我需要知道发布是否成功。在 Facebook 开发者页面上,我发现如果一个帖子成功,该应用程序会收到一个post_id。所以我可以检查这个post_id;如果不是nil,则表示用户已发布到他的提要,但我怎样才能获得post_id

【问题讨论】:

【参考方案1】:

我用了一些更简单的东西:

if ([url query] != nil)  // eg. post_id=xxxxxxx
    // success

【讨论】:

【参考方案2】:

当墙贴对话框出现时,用户有 3 个选项。跳过、发布和取消(右上角的小“x”)。这是您可以期待的。

下面描述的这些方法是 FBDialogDelegate 协议的一部分。

对话框调用 dialogCompleteWithUrl:方法,然后调用 dialogDidComplete:方法

跳过 - 当用户点击 Skip 时,传递给 dialogCompleteWithUrl:method 的 url 是

fbconnect://success

发布 - 当用户点击 Publish 时,传递给 dialogCompleteWithUrl:method 的 url 是

fbconnect://success/?post_id=123456789_12345678912345678

其中“123456789_12345678912345678”是用户帖子的唯一帖子 ID(意思是,此 post_id 只是一个示例)。为了更好地解释 post_id,post_id 参数由 userIdentifier 和 postIdentifier 组成。

post_id=<userIdentifier>_<postIdentifier>

取消 - 当用户点击 Cancel 时,对话框调用 dialogCancelWithUrl: 方法,然后调用 dialogCancel: 方法。在下面的示例中,我没有对这个调用做任何事情。

*由于我没有将 post_id 用于任何事情,除了确定是否存在一个来验证帖子是否成功,下面是如何区分这两个结果的示例。这只是一个示例,以帮助您查看上述结果。随意添加您的演绎*

#pragma mark -
#pragma mark - FBDialogDelegate -
/* ====================================================================*/

/*** Called when the dialog succeeds with a returning url.*/
- (void)dialogCompleteWithUrl:(NSURL *)url 
    NSLog(@"Post Complete w/ URL");     

    NSLog(@"%@",[url absoluteString]);
    NSString *theURLString = [url absoluteString];

    NSString *successString = @"fbconnect://success?post_id=";
    NSString *skipString = @"fbconnect://success";

    NSString *subStringURL = nil;
    if ([theURLString length] > [successString length]) 
        subStringURL = [[url absoluteString] substringToIndex:28];
        NSLog(@"%@",subStringURL);        
    

    if ([subStringURL isEqualToString:successString] ) 
    
        UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Wall Post Successful" message:@"" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [successAlert show];
        [successAlert release];
     

    if ([theURLString isEqualToString:skipString]) 

        UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Wall Post Skipped" message:@"" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [successAlert show];
        [successAlert release];         
    



/*** Called when the dialog succeeds and is about to be dismissed.*/
- (void)dialogDidComplete:(FBDialog *)dialog 
    NSLog(@"Post Complete");


/*** Called when the dialog is cancelled and is about to be dismissed. */
- (void)dialogDidNotComplete:(FBDialog *)dialog     
    NSLog(@"Post Cancelled");


/*** Called when the dialog get canceled by the user.*/
- (void)dialogDidNotCompleteWithUrl:(NSURL *)url 
    NSLog(@"Post Cancelled w/ URL");    
    NSLog(@"%@",[url absoluteString]);   

【讨论】:

以上是关于检查发布到 Facebook 提要的成功与否的主要内容,如果未能解决你的问题,请参考以下文章

如何获取带有图像和视频以及文本的 facebook 提要?

Facebook iOS SDK 3.2 获取用户新闻提要

无法通过 Graph API 将提要发布到 Facebook 页面

Facebook API页面提要没有向我的webhook发送信息?

如何使用 Graph Api 在 facebook 新闻提要中获取“新添加的照片到相册”

Facebook 页面的帖子提要