Из-за того, что Facebook не поддерживает новый FBML, я ищу новый способ создания вкладки «раскрытия» (вкладка страницы, на которой одна версия отображается для поклонников, а другая - для сторонников). Facebook добавил данные в подписанный запрос:
Когда пользователь выбирает ваше приложение в
левое меню, приложение получит
параметр Sign_request с одним
дополнительный параметр, страница, JSON
массив, который содержит "идентификатор"
Facebook страница, на которой размещена ваша вкладка
внутри, логическое («понравилось»), указывающее
нравится ли пользователю
Page и логическое значение («admin»)
указывающий, является ли пользователь
«Администратор» страницы вместе с
массив информации о пользователе.
Я умею хорошо читать подписанный запрос, но затем мне нужно обработать его с помощью декодирования 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, поскольку это не будет полноценное приложение (просто вкладка) и не потребует каких-либо дополнительных разрешений от пользователей. Любые рекомендации относительно моего метода определения поклонников также приветствуются.