Из-за того, что Facebook не поддерживает новый FBML, я ищу новый способ создания «раскрывающей» вкладки (вкладки страницы, которая показывает одну версию фанатам, а другую - не фанатам. ). Facebook добавил данные в signed_request:
Когда пользователь выбирает ваше приложение в левое меню, приложение получит параметр signed_request с одним дополнительный параметр, страница, JSON массив, который содержит "идентификатор" Страница Facebook, на которой размещена ваша вкладка внутри, логическое значение ("понравилось"), указывающее понравился ли пользователю Страница и логическое значение ('admin') указывает, является ли пользователь "админ" страницы вместе с массив информации о пользователе.
Я могу прочитать сообщение signed_request, но затем мне нужно обработать его с помощью декодирования base64url, чтобы получить правильный JSON. Кроме того, в своем исследовании я обнаружил, что JSON неправильно отформатирован для Ruby, поэтому перед его декодированием необходимо изменить. Вот текущий код (пока я просто печатаю подписанный запрос в index.erb):
helpers do
def base64_url_decode str
encoded_str = str.gsub('-','+').gsub('_','/')
encoded_str += '=' while !(encoded_str.size % 4).zero?
Base64.decode64(encoded_str)
end
def decode_data str
encoded_sig, payload = str.split('.')
data = ActiveSupport::JSON.decode base64_url_decode(payload)
end
end
get '/' do
signed_request = params[:signed_request]
@signed_request = decode_data(signed_request)
erb :index
end
Я стараюсь сделать приложение как можно более легким и избегать использования полной библиотеки Facebook, поскольку это не будет полное приложение (просто вкладка) и не требует дополнительных разрешений от пользователей. Также приветствуются любые рекомендации относительно моего метода обнаружения поклонников.