Глубокая ссылка на холст Facebook - PullRequest
1 голос
/ 26 ноября 2011

Я встраиваю приложение 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 параметр
  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. Преобразование промежуточного программного обеспечения приложения POST в GET, если присутствует signed_request (код и идея заимствованы из https://github.com/dekart/facebooker2/blob/master/lib/facebooker2/rack/post_canvas.rb)
  5. Анализ приложения signed_request с fb_graph gem

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

1 Ответ

0 голосов
/ 27 ноября 2011

Я бы просто обновил ссылку, чтобы она указала на http://apps.facebook/example/messages/123 с самого начала.

При проверке подлинности просто установите перенаправление после авторизации / входа на ту же страницу.

Перенаправление пользователя на несколько страниц без какой-либо причины - просто плохая практика.

...