【问题标题】:FB App closes as soon as it is displayed with presentShareDialogWithOpenGraphAction on ios 6FB App 在 ios 6 上使用 presentShareDialogWithOpenGraphAction 显示后立即关闭
【发布时间】:2013-06-03 14:18:34
【问题描述】:

当我从我的应用程序启动 Facebook 时,无法发布对话框,因为 FB 应用程序会在显示共享对话框后立即关闭。

完成处理程序没有被调用。没有错误。没有成功。

   id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];

   action[@"mystory"] = @{
                            @"fbsdk:create_object": @YES,
                            @"type": @"appname:mystory",
                            @"title":@"title",
                            @"url": @"http://www.foo.bar",
                            @"description":@"text"
                            };


    FBAppCall *appCall = [FBDialogs presentShareDialogWithOpenGraphAction:action
                                          actionType:@"appname:myaction"
                                 previewPropertyName:@"mystory"
                                             handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                                 if(error) {
                                                     NSLog(@"Error: %@", error.description);
                                                 } else {
                                                     NSLog(@"Success!");
                                                 }
                                             }];

有没有人知道我做错了什么?

如果我只使用 presentShareDialogWithLink,它就可以正常工作。

编辑: 如果我在没有任何 url 的情况下通过 appcall,它就可以工作!为什么?

   action[@"mystory"] = @{
                            @"fbsdk:create_object": @YES,
                            @"type": @"appname:mystory",
                            @"title":@"title",
                            @"description":@"text"
                            };

【问题讨论】:

  • Facebook 提供的关于这方面的文档很差......但我相信如果你传递一个 URL,Facebook 会尝试废弃它以寻找 Open Graph 元标记,如果其中一个是错误的,整个事情都出错了。尝试将您的 URL 放入 Facebook 调试器,看看它是否发现任何错误:developers.facebook.com/tools/debug
  • 我的印象是,您可以创建用户拥有的对象,从而绕过对后端服务器的需求。这是准确的吗?此外,我认为 @"fbsdk:create_object": @YES,实际上是这样做的。是否 shareDialog 应该将用户带到本机 iOS facebook 应用程序?

标签: ios facebook facebook-graph-api facebook-opengraph


【解决方案1】:

我在使用来自https://developers.facebook.com/docs/howtos/share-dialogs-ios-sdk/ 的示例代码时遇到了一个非常相似的问题(它肯定会进入代码的共享对话框部分而不是 Feed 对话框):我的应用程序正在进入后台,而 facebook 应用程序是出现,只是立即再次被解雇,返回我的应用程序。

经过一番搜索,我发现了一些对 URL 处理设置的引用,并决定仔细检查应用集成。我发现从 3.2 迁移到 3.5 时我遗漏了一些东西,特别是 plist 中的 FacebookDisplayName 条目、对 openURL 功能的更改以及启用共享对话框 beta 功能,如下所述:https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.2-to-3.5/

毕竟,问题已经消失了:对话框正确显示,我可以愉快地分享内容了。不幸的是,我无法告诉您上述更改中的哪一项实际上解决了该问题,但可能值得仔细检查它们。

【讨论】:

    【解决方案2】:

    检查:

    • “appname”是您实际应用的命名空间

    • “mystory”是实际的对象类型

    • “myaction”是您的操作名称

    并且您需要一个您托管的有效 URL。您提供的“http://www.foo.bar”无法被 Facebook 废弃且无法使用。

    【讨论】:

    • 这是一个示例代码,我的实际代码不同。其他属性名称和其他 URL... www.foo.bar 是示例的标准,myapp、mystory 和 myaction 是示例。我提供的代码应该适合每个有同样问题的人。
    • 我明白,我只是敦促您仔细检查输入的所有信息。我遇到了和你一样的问题,当我使用自己托管的工作 URL 时,它已解决
    【解决方案3】:

    当您在 appcall 中有 URL 时,它是否与您在 Facebook 应用配置中的 App Domains 框中输入的 URL 匹配?如果您的应用调用中的 url 和您在 Facebook 上的应用配置中输入的 url 不同,那么调用将像您一样失败,这可能是原因。

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多