【问题标题】:Reading x-access-Level header for Twitter REST API using omniauth-twitter / twitter Gem使用 omniauth-twitter / twitter Gem 读取 Twitter REST API 的 x-access-Level 标头
【发布时间】:2012-03-22 08:46:45
【问题描述】:

我正在使用 Omniauth 通过 OAuth 对 Twitter 用户进行身份验证(使用 omniauth-twitter gem)。我计划允许普通用户仅使用“读取”权限登录,并且仅在他们决定在站点内创建内容时授权“读写”权限。

在我的 Identity 模型中,我正在分析 AuthHashomniauth 传递给 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-access-level 标头添加到每个响应中,但即使使用这种方法我也不知道如何读取返回的headers来读取x-access-level的header。

【问题讨论】:

  • 你到底走哪条路?
  • 不幸的是,自从我询问以来,我没有太多时间花在我自己的项目上,但是omniauth-twitter gem 的作者确实做了一些改变(可能在他的 github repo 的一个分支中)尝试让它工作。 IIRC 我尝试过但无法立即使用它,但后来我没有时间处理它。

标签: ruby-on-rails rest twitter twitter-oauth


【解决方案1】:

我知道这不是同一个 ruby​​ twitter 客户端,但它可能会帮助其他在使用 ruby​​ twitter 客户端(宝石“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

希望这对其他人有所帮助...

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 2016-07-08
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2011-08-18
    相关资源
    最近更新 更多