2012-04-01 117 views
2

我可以把请求发送到使用“多朋友请选择”我的页面标签应用程序,哪个环节看起来像里面的朋友:的Facebook SDK:从页面标签应用程序发送请求

https://www.facebook.com/<my_page_name>/app_<my_app_id> 

我的朋友收到我的请求,点击“接受”。它转发到Facebook应用程序的真实链接,即:

https://apps.facebook.com/<my_app_name>/?fb_source=request&request_ids=<an_request_id> 

这不在页面选项卡内了。在request_ids必须保留的情况下,我如何将用户转发到第一个链接而不是第二个链接?我只是做一个header('Location: url');转发?

p.s.时间轴已在使用中。

回答

4

是的,你必须转发到你的网页网址,因为请求总是重定向到画布网址。

要传递请求ID,您可以使用app_data字段。所以,而不是重定向到https://www.facebook.com/<my_page_name>/app_<my_app_id>您重定向到https://www.facebook.com/<my_page_name>/app_<my_app_id>?app_data=requestids。这里的要求是的实际值(画布获得的逗号分隔列表)。

app_data可用于您的页面标签应用程序作为它收到的signed_request的一部分。

docs

此外,您的应用程序也将收到称为app_data文件作为signed_request的一部分,如果app_data文件参数在您的标签装载在URL中的原始查询字符串设定字符串参数。对于上面的“立即购买”链接,可能如下所示:“https://www.facebook.com/YourPage?v=app_1234567890 & app_data = any_string_here”。如果您控制链接的生成,您可以使用它来自定义您呈现的内容。

+1

几乎完美的答案。重定向链接应该是:'https://www.facebook.com//app_ ?app_data = requestids'和PHP'header('Location:url')'在这种情况下不起作用。需要使用客户端JavaScript重定向。 – Raptor 2012-04-02 01:57:44

+1

很高兴它帮助..我没有提及任何关于'header'因为它有时候有效,(当你还没有发送任何输出到浏览器),afaik。网址,我不太确定它的这种形式,我习惯于旧的样式,'https://www.facebook.com/YourPage?v = app_1234567890&app_data = any_string_here'。无论如何,谢谢,我也学到了一些东西。 – 2012-04-02 07:35:10

+0

仅供参考,这两种格式的URL都适用,但Facebook在更改为时间轴后似乎更喜欢我的版本,因为它是时间轴的默认链接格式。 – Raptor 2012-04-02 07:53:46

相关问题