【问题标题】:Deep link into a Facebook canvas appFacebook 画布应用的深层链接
【发布时间】:2012-01-06 22:46:30
【问题描述】:

我将 Facebook 应用程序 https://example.com 嵌入到 Facebook 应用程序画布中,以便它在 https://apps.facebook.com/EXAMPLE 可用。我的应用程序发送通知电子邮件,其中包含https://example.com/messages/123 之类的链接,并且应该打开嵌入到 Facebook 画布中的页面。我如何实现这一目标?我目前的想法:

  1. 用户打开https://example.com/messages/123
  2. 应用程序检查signed_request parameter
  3. 应用程序将用户重定向到https://apps.facebook.com/EXAMPLE/?requested_page=/messages/123
  4. 应用程序检查requested_page 参数并重定向到此页面
  5. 用户看到https://example.com/messages/123 URL 并嵌入到画布中

有没有更好的模式来实现这个工作?

我的最终工作解决方案(使用 Ruby on Rails)

  1. 用户打开https://example.com/messages/123
  2. 应用程序在客户端检查应用程序是否嵌入在画布中:

    if(window == top){
        top.location = "https://apps.facebook.com/#{Settings.facebook.app_id}#{request.fullpath}";
    }
    
  3. 用户被重定向到https://apps.facebook.com/EXAMPLE/messages/123

  4. 如果存在signed_request,应用程序中间件会将POST 转换为GET(代码和想法来自https://github.com/dekart/facebooker2/blob/master/lib/facebooker2/rack/post_canvas.rb
  5. 应用程序使用 fb_graph gem 解析 signed_request

    FbGraph::Auth.new(app_id, app_secret, :signed_request => params[:signed_request])
    

【问题讨论】:

    标签: ruby-on-rails facebook-iframe facebook-apps facebook-canvas


    【解决方案1】:

    我只是将链接更新为指向 http://apps.facebook/example/messages/123 一开始。

    当您检查身份验证时,只需将授权/登录后的重定向设置到同一页面。

    无缘无故将用户重定向到多个页面并不是一个好习惯。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多