我有这个Facebook应用程序,它为粉丝页面添加了一个自定义选项卡。您可以通过以下URL访问该选项卡:
http://www.facebook.com/pages/PAGE-NAME-HERE/PAGE-ID?v=APP-ID
我希望能够为该URL添加一些额外的get参数,但似乎它们没有正确传递,因为facebook正在过滤它们。有没有办法传递这些参数?即使不是通过GET而是其他一些技术。
答案 0 :(得分:10)
如果你想通过app_data参数传递多个查询字符串参数,你可以 urlencode it 。
需要通过Facebook标签传播的所有查询字符串参数应在app_data var中进行URL编码。
换句话说,“&”并且“=”需要进行url编码(特别是如果传递多个参数)。
在此签名请求的app_data中,我得到了这个值: var1 = 123456789& anothervar = rawr& athird = meow
在这个签名请求的app_data中,我只获得了这个值: var1 = 123456789 (Facebook放弃了其余的)
您甚至可以向媒体团队提供这样的说明=)
媒体团队,
这是一个在线实用程序,用于对您想要的查询数据进行urlencode 嵌入app_data参数:http://meyerweb.com/eric/tools/dencoder/
基本网址:https://www.facebook.com/pages/yourpagename/12345?sk=app_56789&app_data=
步骤:
- 转到http://meyerweb.com/eric/tools/dencoder/
- 类型var1 = 123456789& anothervar = rawr& athird =盒子里的喵喵
- 点击编码按钮
- 你将得到var1%3D123456789%26anothervar%3Drawr%26athird%3Dmeow成为你的app_data参数。将其附加到上面提到的baseUrl,如下所示: https://www.facebook.com/pages/yourpagename/12345?sk=app_56789&app_data=var1%3D123456789%26anothervar%3Drawr%26athird%3Dmeow(这是[横幅广告] [在线媒体] [等]的跟踪参数的网址
醇>
P.S。非标签页中的查询字符串参数处理得很好(https://apps.facebook.com/yourappname/Canvas.aspx?var1=123456789&anothervar=rawr&athird=meow不会删除qs参数,例如Tab中发生的情况)。
答案 1 :(得分:0)
您必须在网址中传递app_data参数:
http://facebook.com/pages/:page_id/:page_name?sk=app_:app_id&app_data=my_data
然后,您将通过signed_request参数访问它。例如Ruby和RestGraph:
user = RestGraph.new.parse_signed_request(params[:signed_request)
data = user['app_data'] # => "my_data"
答案 2 :(得分:0)
追加app_data对我有用。
http://www.facebook.com/pages/MyPage/11111111111111?sk=app_22222222229&app_data=foo_bar
然后使用PHP SDK(在我的情况下)检索签名的请求。然后app中的app_data可用。数组返回。
答案 3 :(得分:0)
我想知道同样的情况,就我而言,我需要传递一个参数“ from”,以识别用户是使用移动表单还是Web表单登录。我的应用程序使用Spring Security。我能够做到这一点的方法是创建自己的SocialAuthenticationFilter:
1)在您的登录表单中添加一个(在我的情况下是隐藏的)参数(在此示例中为“ from”)。
2)获取正确的SocialAuthenticationFilter.java源码(根据您的Spring版本)。
3)使用它创建您的MySocialAuthenticationFilter。
4)在方法中:
SELECT users.id, users.name, COALESCE(task_reg.payment, 0) AS payment
FROM users
LEFT JOIN task_reg ON users.id = task_reg.use_id
LEFT JOIN topics ON topics.id = task_reg.top_id AND topics.id = 1
是您可以使用的地方
抓取您的参数:
getRequestedProviderId(HttpServletRequest request)
仅此而已。这样,在成功通过身份验证之后,您将能够从会话中恢复您的参数。 请注意,在OAuth交换期间会多次调用此方法,并且从身份验证提供程序(例如Facebook)调用此方法时,该参数将为null。这就是在保存会话之前检查该值的原因,以避免删除您的正确值。
答案 4 :(得分:-2)
我回答说这是不可能的。