我正在使用Omniauth通過OAuth使用Twitter對用戶進行身份驗證(使用omniauth-twitter
gem)。我打算允許普通用戶使用「讀取」權限進行登錄,並且只有在他們決定在網站內創建內容時授權「讀寫」權限。使用omniauth-twitter/twitter閱讀Twitter REST API的x-access-level標題Gem
在我的Identity
模型中,我正在分析AuthHash
omniauth傳遞給create_with_omniauth動作,並且爲每個提供者類型分別創建邏輯,以便我可以更深入地查看返回的哈希模式(如有必要)。
如果我輸入結構的raise auth.to_yaml
,我看到我想讀的'x-access-level'標題,但我不知道如何查看response: Net::HTTPOK
對象以便到達下一層的結構。
這是AUTH結構,切割出一些不必要的細節
--- !ruby/hash:OmniAuth::AuthHash
provider: twitter
...
extra: !ruby/hash:Hashie::Mash
...
access_token: !ruby/object:OAuth::AccessToken
...
response: !ruby/object:Net::HTTPOK
http_version: '1.1'
code: '200'
message: OK
header:
x-access-level:
- read-write
x-ratelimit-limit:
- '350'
x-ratelimit-remaining:
- '348'
x-ratelimit-reset:
- '1330798604'
到目前爲止,我可以得到的響應與auth["extra"]["access_token"].response
但把.header
末返回相同的響應結構,["header"]
當我舉起它時,它是空的。
如果需要的話,我可以使用Twitter gem在Identity模型中執行verify_credentials
調用(因爲Twitter會將x訪問級別標頭添加到每個響應中,但即使採用這種方法,我也不知道如何讀取返回的頭文件以讀取x-access-level頭文件
你到底走哪條路? – 2013-01-11 18:00:47
不幸的是,自從我問了以後,我沒有太多時間花在自己的項目上,但是omniauth-twitter gem的作者確實做了一些更改(可能在他的github回購中的某個分支上)嘗試使其運行。 IIRC我試過了,無法立即開始工作,但後來我沒有時間去處理它。 – dsample 2013-01-31 20:12:54