0

我使用Rails 3.2与omniauth-facebookkoala宝石与Facebook进行交互。一切工作顺利作为一个独立的网页,但我有一个问题与画布。Facebook画布应用自动登录一次授权

当用户已经授权应用程序,然后访问或刷新画布页面(https://apps.facebook.com/my_app)时,如果他们登录到Facebook,他们应该自动登录到我的应用程序。这没有发生,他们必须再次单击登录按钮。

我没有收到任何地方的request.env['facebook.params']request.env['facebook.signed_request']

我在哪里可以找到facebook.paramsfacebook.signed_request信息,或者如何获取有关哪个用户正在查看画布应用的信息?

回答

0

的解决方案是包括JS SDK,然后用

@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上的JavaScript SDK中的CoffeeScript文件中获得的access_token:

# 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