0

Я использую Rails 3.2 с камнями omniauth-facebook и koala, чтобы взаимодействовать с facebook. Все работает плавно, как отдельная веб-страница, но у меня проблема с холстом.Facebook canvas app автоматический логин после авторизации

Когда пользователь уже разрешил приложение, а затем посещает или обновляет страницу холста (https://apps.facebook.com/my_app), они должны автоматически регистрироваться в моем приложении, если они вошли в фейсбук. Этого не происходит, и они снова должны нажать кнопку входа в систему.

Я не принимаю request.env['facebook.params'] или request.env['facebook.signed_request'] в любом месте.

Где я могу найти информацию facebook.params или facebook.signed_request или как получить информацию о том, какой пользователь просматривает приложение для холста?

ответ

0

Решение было включить JS SDK, а затем получить access_token с

@oauth = Koala::Facebook::OAuth.new(ENV["FACEBOOK_APP_ID"], ENV["FACEBOOK_APP_SECRET"], canvas_path) 
@oauth.get_user_info_from_cookies(cookies) 

По https://github.com/arsduo/koala/blob/10595edae78d75f1e34b58cc7da16f0475f65a3e/readme.md

Я включил на Facebook яваскрипта SDK в CoffeeScript файле:

# facebook.js.coffee.erb 

jQuery -> 
    $('body').prepend('<div id="fb-root"></div>') 

    $.ajax 
    url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" 
    dataType: 'script' 
    cache: true 


window.fbAsyncInit = -> 
    FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) 

    $('#fb-login').click (e) -> 
    e.preventDefault() 
    FB.login (response) -> 
     window.location = '/auth/facebook/callback' if response.authResponse 
    , scope: "email, publish_actions" 

    $('#sign_out').click (e) -> 
    FB.getLoginStatus (response) -> 
     FB.logout() if response.authResponse 
    true 
Смежные вопросы