FB App 在 ios 6 上使用 presentShareDialogWithOpenGraphAction 显示后立即关闭
Posted
技术标签:
【中文标题】FB App 在 ios 6 上使用 presentShareDialogWithOpenGraphAction 显示后立即关闭【英文标题】:FB App closes as soon as it is displayed with presentShareDialogWithOpenGraphAction on ios 6 【发布时间】: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 应用程序? 【参考方案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 不同,那么调用将像您一样失败,这可能是原因。
【讨论】:
以上是关于FB App 在 ios 6 上使用 presentShareDialogWithOpenGraphAction 显示后立即关闭的主要内容,如果未能解决你的问题,请参考以下文章
fb ios sdk session用于现有的fb connect网站
当设备中安装了 FB Native App 时,无法使用 Facebook ios sdk v3 进行授权
在 iOS 6 及更高版本上与 YouTube 和 Twitter 共享视频文件
通过 iOS 9 登录 FB 时打开 Safari 网页视图
ios swift facebook登录 fb_mobile_login_native_app_switch_dialog_result 错误