[英]Reading x-access-Level header for Twitter REST API using omniauth-twitter / twitter Gem
我正在使用Omniauth通過OAuth(使用omniauth-twitter
gem)通過Twitter對用戶進行身份驗證。 我計划允許普通用戶僅使用“讀取”權限登錄,並且僅當他們決定在網站內創建內容時才授權“讀寫”權限。
在我的Identity
模型中,我正在分析AuthHash
omniauth傳遞給create_with_omniauth動作,並且我為每種提供程序類型分別制定了邏輯,以便在必要時可以更深入地研究返回的哈希模式。
如果raise auth.to_yaml
以輸出結構, 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-access-level標頭,但是即使采用這種方法,我也不知道如何讀取返回的內容標頭以讀取x訪問級別標頭。
我知道這不是同一個ruby twitter客戶端,但是它可能會在與ruby twitter客戶端(gem“ twitter”)查找相同問題后幫助其他到達此處的人。
因此,從此調用:
twitter_client = Twitter::Client.new(:oauth_token => token, :oauth_token_secret => secret)
twitter_client.verify_credentials
那只會給你用戶信息json。 您實際上可以獲取twitter api響應,然后檢查標題中包含的x-access-level
resp = twitter_client.get, "/1.1/account/verify_credentials.json"
resp[:response_headers]["x-access-level"] # "read-write" in my case
希望這對其他人有幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.