Из-за того, что 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, так как это не будет полным приложением (только вкладкой) и не потребует никаких дополнительных разрешений от пользователей. Любые рекомендации относительно моего метода обнаружения болельщиков также приветствуются.