Я пытаюсь выяснить, нравится ли пользователю страница нашего бренда. Исходя из этого, мы хотим показать любую кнопку или какой-то «спасибо».Захват Facebook signed_request с Sinatra
Я работаю с приложением sinatra, размещенным на геройку.
Я попробовал код из этой темы: Decoding Facebook's signed request in Ruby/Sinatra
Однако, это не похоже, чтобы захватить signed_request, и я не могу понять, почему.
У меня есть следующие методы:
get "/tab" do
@encoded_request = params[:signed_request]
@json_request = decode_data(@encoded_request)
@signed_request = Crack::JSON.parse(@json_request)
erb :index
end
# used by Canvas apps - redirect the POST to be a regular GET
post "/tab" do
@encoded_request = params[:signed_request]
@json_request = decode_data(@encoded_request)
@signed_request = Crack::JSON.parse(@json_request)
redirect '/tab'
end
Я также вспомогательные сообщения из этой цепочки, так как они, кажется, имеет смысл для меня:
helpers do
def base64_url_decode(payload)
encoded_str = payload.gsub('-','+').gsub('_','/')
encoded_str += '=' while !(encoded_str.size % 4).zero?
Base64.decode64(encoded_str)
end
def decode_data(signed_request)
payload = signed_request.split('.')
data = base64_url_decode(payload)
end
end
Однако, когда я просто
@encoded_request = params[:signed_request]
и читать это на мой взгляд с:
<%= @encoded_request %>
Я ничего не получаю.
Не должно ли это вернуть хотя бы что-то? Мое приложение, похоже, рушится, потому что хорошо, что нечего декодировать.
Я не могу найти много информации об этом в Интернете, поэтому я был бы рад, если бы кто-нибудь мог мне помочь.
Есть ли лучшие способы узнать, нравится ли пользователю наша страница? Или, это путь, и я просто не замечаю ничего очевидного?
Спасибо!
Спасибо. Эта разбивка на уровне HTTP была действительно полезна. Я сейчас создаю шаблон в POST, и он отлично работает; мне нужно ПОЛУЧИТЬ что-нибудь, если это просто на Facebook? Я могу оставить его, если люди посещают веб-сайт холста за пределами FB; но FB-мудрый, нам это нужно? Большое вам спасибо, это действительно повредило мне голову! – cabaret
Рад, что я мог бы помочь! :) Исходя из того, что вы описываете, вам, вероятно, не понадобится обработчик GET. Если ваше приложение будет всего лишь одной страницей, все будет в порядке. – nfelger