Ios Facebook SDK:知道是否进行了共享

Ios Facebook SDK:知道是否进行了共享,ios,facebook,facebook-ios-sdk,Ios,Facebook,Facebook Ios Sdk,我正在使用HelloFacebookSample中的代码共享我应用程序中的链接,但我不知道如何知道共享是否真的发生了。我用这个来分享: FBAppCall *appCall = [FBDialogs presentShareDialogWithLink:urlToShare name:@"Hello Facebook"

我正在使用HelloFacebookSample中的代码共享我应用程序中的链接,但我不知道如何知道共享是否真的发生了。我用这个来分享:

FBAppCall *appCall = [FBDialogs presentShareDialogWithLink:urlToShare
                                                      name:@"Hello Facebook"
                                                   caption:nil
                                               description:@"The 'Hello Facebook' sample application showcases simple Facebook integration."
                                                   picture:nil
                                               clientState:nil
                                                   handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                                       if (error) {
                                                           NSLog(@"Error: %@", error.description);
                                                       } else {
                                                           NSLog(@"Success!");
                                                       }
                                                       NSLog(@"Results: %@",results);
                                                   }];
这很好。问题是访问结果字典。我发现我需要将此添加到应用程序代理:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
  // attempt to extract a token from the url
  return [FBAppCall handleOpenURL:url
                sourceApplication:sourceApplication
                  fallbackHandler:^(FBAppCall *call) {
                    NSLog(@"In fallback handler");
                  }];
}
否则,处理程序根本不会运行。奇怪的是,在示例应用程序中,结果字典有两个字段

completionGesture = cancel;
didComplete = 1;
但当我在同一部手机上的应用程序中使用完全相同的代码时,字典只包含

didComplete = 1;

为什么会这样?还有其他方法可以确定用户是共享还是取消了吗?

请参阅本节,了解您在结果字典中可以看到的内容,以及为什么只有一些值可用:


谢谢您的评论。我理解这些词,但我不太清楚“在应用程序中登录facebook”是什么意思。我的意思是,虽然我确实从来没有明确登录过,但我可以发布东西,所以我必须在某种意义上登录。在示例应用程序中,即使我删除了除共享按钮和相同代码片段以外的所有内容,它仍然有效,它仍然返回完整的字典。在任何情况下,有没有办法在不明确登录的情况下确定用户是否取消了登录?登录到你的应用程序,然后登录到Facebook应用程序。如果用户从未登录过你的应用程序(使用Facebook登录),那么你将看到的唯一一个密钥就是didComplete。如果用户已授权您的应用程序,则您还将看到Completion手势。为了更直接地回答你的第二个问题,不,如果用户没有明确授权你的应用程序,就无法确定用户是否已取消。好的,我明白了。然后有点奇怪,它仍然在简化的示例中工作,但可能它仍然记得在我删除LoginView之前被授权过。这是因为你的应用是否曾经被用户授权过(包括在不同的设备上)。