我将 Facebook 应用程序嵌入https://example.com
到 Facebook 应用程序画布中,以便在https://apps.facebook.com/EXAMPLE
. 我的应用程序发送通知电子邮件,其中包含类似的链接https://example.com/messages/123
,并且应该打开嵌入到 Facebook 画布中的页面。我如何实现这一目标?我目前的想法:
- 用户打开
https://example.com/messages/123
- 应用程序检查
signed_request
参数 - 应用程序将用户重定向到
https://apps.facebook.com/EXAMPLE/?requested_page=/messages/123
- 应用程序检查
requested_page
参数并重定向到此页面 - 用户看到
https://example.com/messages/123
URL 并嵌入到画布中
有没有更好的模式来实现这个工作?
我的最终工作解决方案(使用 Ruby on Rails)
- 用户打开
https://example.com/messages/123
如果应用程序嵌入在画布中,应用程序会在客户端检查:
if(window == top){ top.location = "https://apps.facebook.com/#{Settings.facebook.app_id}#{request.fullpath}"; }
用户被重定向到
https://apps.facebook.com/EXAMPLE/messages/123
- 应用程序中间件转换
POST
为GET
if is present(从https://github.com/dekart/facebooker2/blob/master/lib/facebooker2/rack/post_canvas.rbsigned_request
借用的代码和想法) 应用程序
signed_request
使用 fb_graph gem解析FbGraph::Auth.new(app_id, app_secret, :signed_request => params[:signed_request])