簡體   English   中英

使用omniauth-twitter / twitter Gem讀取Twitter REST API的x-access-level標頭

[英]Reading x-access-Level header for Twitter REST API using omniauth-twitter / twitter Gem

我正在使用Omniauth通過OAuth(使用omniauth-twitter gem)通過Twitter對用戶進行身份驗證。 我計划允許普通用戶僅使用“讀取”權限登錄,並且僅當他們決定在網站內創建內容時才授權“讀寫”權限。

在我的Identity模型中,我正在分析AuthHash omn​​iauth傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM