带有应用请求的 Facebook iOS SDK 传递参数
Posted
技术标签:
【中文标题】带有应用请求的 Facebook iOS SDK 传递参数【英文标题】:Facebook iOS SDK Pass parameter with app requests 【发布时间】:2012-04-21 06:52:39 【问题描述】:我想让我的原生 ios 应用向 iOS 上的 Facebook 用户发送一个带有参数的请求。如果他们接受,它将启动我的原生 iOS 应用程序并将参数传递给它。这可能吗?
我使用 [facebook dialog:@"apprequests" andParams:dict andDelegate:self] 取得了一定的成功。我让 Facebook iOS 应用程序上的书签计数器增加,但我没有看到个别请求。如果我点击书签,它会启动我的应用程序,但我看不到如何获取随请求传递的“数据”参数,甚至是 request_id。
在桌面上,我在“应用程序和游戏”的“请求”部分下看到单独的消息。如果我接受请求,我可以看到它将 request_id 传递给我的(简单回显)画布 URL。我读到这可用于获取相关数据。但是,这在 iOS 上对我没有帮助。我的应用只在 iOS 上运行,所以这个画布应用最终将只是一个“这个应用只在 iOS 上运行”,但似乎有必要让请求流动。
这些都没有向我显示通知,所以也许我做错了什么。或者,是否有其他方法可以将消息传递给 Facebook 用户,他们可以单击 URL(启动并提供我的应用程序的参数)。
还有一件奇怪的事情,我不知道如何摆脱请求。如果我在桌面客户端上“X”它们,它会询问我是否要停止接收来自我的应用程序的所有请求,如果我说不,它只会暂时隐藏它们。
【问题讨论】:
不确定,但您在搜索“深度链接”吗? 【参考方案1】:Leif,嗨 - 我是 Facebook 的工程师,他编写了您所引用的教程。 我已经查看了您提到的问题 - 这实际上不是文档中的错误,而是设计使然。
iOS 上请求的传入 url 如下所示:
fb480369938658210://authorize?expires_in=3600&access_token=BAAG05NeN86IBAC31YWMWRHVrNCAYMy0Rv1OtqZCwdH8QDBUAt5KgZCsIbU0EOZAvMms2tZCANV9sZBWSkEzStDtt4i7YnYZA4bPgGx2XaI5s22iBMxIZAneZAv7ADi3Wi20ZD&target_url=http%3A%2F%2Fm.facebook.com%2Fapps%2Ffriendsmashsample%3Ffb_source%3Dnotification%26request_ids%3D364209433669109%252C379616028785376%252C494409170593789%252C489782271042929%252C328564930575784%26ref%3Dnotif%26app_request_type%3Duser_to_user
这是将多个请求捆绑在一起,具有多个请求 ID 到一个 url。
要获取与此请求耦合的额外数据,不需要 user_id。点击 graph.facebook.com/*request_id* 就足够了。
您实际上可以在此处的文档中看到这一点:https://developers.facebook.com/docs/requests/#deleting 在“请求 ID 格式”标题下。
Friendsmash 示例和教程中包含的代码可以正常工作 - 我刚刚验证了它。所以它应该作为 OP 问题的一个很好的指南。
谢谢!
【讨论】:
知道为什么我的 app_requests 不会触发通知吗?他们增加我的应用书签计数器,我可以读取应用数据并删除请求。使用我的个人帐户时,我只是从未在 iOS Facebook 应用程序上看到全球亮点。我已经看到它在桌面 www 界面上显示通知,但很少见。我的一位测试人员在 iOS 上看到了通知,所以它一定是 FB 帐户设置或历史记录,但我已经尝试了我在 iOS 和 www 应用程序上可以找到的所有可能的开关。我想知道它是否可能是一些偷偷摸摸的垃圾邮件拦截算法? 你是如何触发应用请求的?从哪里?您能否将报告发送至 devsupport@fb.com - 谢谢。 我在 iOS SDK 中使用 @"apprequests" 对话框,复古 2010。客户端 API 看起来很简单,我认为问题一定出在“Facebook 应用程序”设置上。我想我应该在提交报告之前升级到最新的 SDK 并检查当前的文档和应用配置。【参考方案2】:我也一直在为此苦苦挣扎。
首先,FB iOS SDK requests tutorial 是一个好的开始。
但是,也有一些错误导致事情无法按预期工作:
目前看来,必须为 FB 应用程序设置一个移动 Web url,以便将 requestIds 从本机 FB 应用程序转发到您的本机应用程序。看到这个bug report。 上面提到的教程对请求对象使用了错误的图形路径。我使用“request-id”,它应该是“request-id”_“user-id”。我已就该问题提交了一份文档bug report。【讨论】:
以上是关于带有应用请求的 Facebook iOS SDK 传递参数的主要内容,如果未能解决你的问题,请参考以下文章
我如何从facebook IOS SDK邀请的朋友那里获得ID?
Facebook iOS SDK - 向 facebook 用户发送应用请求