2012-08-22 28 views
0

試圖編寫Facebook應用程序並嘗試進行身份驗證。這是一個rails 3.1應用程序Facebook將訪問代碼放入網頁

第一次重定向,我給Facebook我的API和它返回的代碼似乎運行良好。但是當我嘗試使用這些代碼並從access_token中「交換」時,我遇到了問題。

訪問令牌出現在iframe aws的位置。

這是我的代碼。

def index 
#Load facebook.yml info 
config = YAML::load(File.open("#{Rails.root}/config/facebook.yml")); 
# setup client 

redirect_to "https://graph.facebook.com/oauth/authorize?client_id=#{config['development']['app_id']}&redirect_uri=#{CALLBACK_URI}" 

end 
def callback 

    logger.debug("c") 
    config = YAML::load(File.open("#{Rails.root}/config/facebook.yml")); 
    if (!params.key?('access_token')) 
    logger.debug("A") 
    redirect_to "https://graph.facebook.com/oauth/access_token?client_id=# {config['development']['app_id']}&redirect_uri=#{CALLBACK_URI}&client_secret=#{config['development']['client_secret']}&code=#{params['code']}" 
    return 
end 
    logger.debug("B") 
access_token = params['access_token'] 
@me = FbGraph::User.me(ACCESS_TOKEN) 
@[email protected] 

end 
end 

回答

0

您是應該重定向用戶的瀏覽器的第二個端點(認爲了一會兒,你把你的應用程序祕密到該URL,所以這將是每個人都能輕鬆發現它) - 您應該向該端點發送服務器端呼叫

該文檔明確這麼說,https://developers.facebook.com/docs/authentication/server-side/

「一旦用戶授權您的應用程序,你應該做一個服務器端請求交換上面的代碼返回給用戶的訪問令牌。「