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