3

我使用此代码呈现共享对话框:

if (![[FBSession activeSession] isOpen]) {[self login]; return;}

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @"name", @"name",
                                       @"caption", @"caption",
                                       @"description", @"description",
                                       @"http://cnn.com", @"link",
                                       @"http://cnn.com/.png", @"picture",
                                       nil];

  [FBWebDialogs presentFeedDialogModallyWithSession:nil
                                           parameters:params
                                              handler:
     ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
         if (error) {
             NSLog(@"Error publishing story.");
         } else {
             if (result == FBWebDialogResultDialogNotCompleted) {
                 NSLog(@"User canceled story publishing (clicked the 'x' icon)");
             } else {
                 // Handle the publish feed callback
                 NSLog(@"Handle the publish feed callback");
             }
         }
     }];

我在 Info.plist 中添加了正确的条目(根据 sdk 文档需要):

在此处输入图像描述

和 AppDelegate 方法也处理 facebook 重定向:

- (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");
                    }];
}

-(void)applicationWillTerminate:(UIApplication *)application{

    [FBSession.activeSession close];

}

我还添加了 iOS Facebook 3.5.1 SDK 所需的框架:

在此处输入图像描述

它提供了空对话框(在真实设备和模拟器上),加载指示器永远旋转:

在此处输入图像描述

日志等中没有显示错误......我可以轻松地关闭它(使用正确的处理程序日志)。

我假设 FBSession 已正确启动并打开(我可以通过重定向到 Safari 成功授权并返回应用程序 - 这让我认为重定向工作正常)。

为什么会这样?我错过了什么?顺便说一句:为什么没有错误日志?

这太令人沮丧了,因为我之前已经多次实施 facebook 集成,但在这个应用程序中,我想尝试最新的 SDK,它被宣传为:“变得前所未有的简单”。

4

5 回答 5

0

您是否尝试将 activeSession 设置为提要对话框的参数?:

//...
[FBWebDialogs presentFeedDialogModallyWithSession:[FBSession activeSession]
                                       parameters:params
                                          handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
//...
于 2013-05-02T11:01:43.557 回答
0

好的,然后检查您是否有发布权限,如果没有,请询​​问他们:

if([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound){
   [FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                         defaultAudience:FBSessionDefaultAudienceEveryone
                                       completionHandler:
                                       ^(FBSession *session, NSError *error) {

                                        if (!error) {
                                            //Here call your method to publish again so you have granted the active session has publish permissions.
                                        }
             }];

我还没有完成网络提要对话框,所以让我知道它是否适合你。

于 2013-05-02T14:47:12.610 回答
0

尝试ShareKit并按照此处的安装说明进行操作:http: //getsharekit.com/install/

它通常开箱即用。

于 2013-05-03T10:34:29.793 回答
0

我遇到了同样的问题。但最终这个错误是由 params 字典中的 @"picture" 键引起的。所以我的建议是用 Facebook 示例中的字典替换你的 params 字典

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"Sharing Tutorial", @"name",
                                   @"Build great social apps and get more installs.", @"caption",
                                   @"Allow your users to share stories on Facebook from your app using the iOS SDK.", @"description",
                                   @"https://developers.facebook.com/docs/ios/share/", @"link",
                                   @"http://i.imgur.com/g3Qc1HN.png", @"picture",
                                   nil];

然后逐步找出字典中的哪个键导致黑屏。

于 2014-03-30T15:10:11.253 回答
0

在这里我遇到了同样的问题。我的解决方案是:

1.AppDelegate上 删除和 删除[FBAppEvents activateApp]; [FBAppCall handleDidBecomeActive]; _- (void)applicationDidBecomeActive:(UIApplication *)application[FBSession.activeSession close];- (void)applicationWillTerminate:(UIApplication *) application

2.将显示名称与 FB Id 一起放在 info.plist 上。

3. 删除旧框架,然后添加新框架 v3.15.1 (Latest)。请记住将复制项目标记到目标组的文件夹添加目标

于 2014-06-24T12:22:19.380 回答