當前的Facebook狀態正如你可能已經從標題猜到了,我試圖用OmniAuth讓我的用戶當前的Facebook狀態(一個新的可選功能)。我已經將必要的範圍選項傳遞給了omniauth初始化程序中的提供者方法。我知道這是一口,對不起。此代碼應幫助:抓取用戶與OmniAuth和Rails的
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_ID'], ENV['FACEBOOK_SECRET'], { scope: 'user_status' }
end
我知道,部分作品,因爲OAuth的對話中,Facebook的提示用戶允許訪問的狀態信息。所以,問題是我期待在驗證哈希要返回自己的狀態,與用戶信息的其餘部分,但它只是不存在。
def callback
raise request.env['omniauth.auth'].to_yaml
end
是的,那是過於簡單化了,但我想你不關心我before_filters等
我周圍一派約2小時,現在,所有這一切,我發現的例子是真做作。涵蓋範圍的那些只提到如何請求許可,但不知道如何真正得到的數據。
有a similar unanswered question這裏如此,但它是如此古老,我不認爲這是復活是個好主意。
我很感激任何幫助。謝謝!
7月3日更新:
感謝您的幫助!我已經採取了你的建議,並使用來自AUTH散列令牌請求,像這樣的用戶的當前狀態:
FbGraph::User.me(@auth[:credentials][:token]).posts.first.message
對於未來的讀者:需要注意的是令牌在約2個月時間到期是很重要的,並且每次用戶更改密碼。您可以希望當他們的令牌接近到期時通知用戶。從我可以在FB文檔中搜集的內容,到期日期以Unix時間戳的形式表示。您可以在轉換到更有用的東西像一個的Ruby的DateTime像這樣:
expires_at = Time.at(@auth[:credentials][:expires_at]).to_datetime
然後,您可以保存令牌模型,並呼籲過去?它,以確保您的應用程序不嘗試使用無效的令牌。
do_something unless expires_at.past?
嗨,我有同樣的問題。試圖去通過FBK權限參考http://developers.facebook.com/docs/authentication/permissions/(下user_status)。還沒有運氣! – Hishalv