Я использую Omniauth для аутентификации пользователей через Twitter через OAuth (используя omniauth-twitter
gem). Я планирую разрешить обычным пользователям входить в систему только с правами «чтения» и разрешать права «чтения и записи» только в том случае, если / когда они решат создать что-то на сайте.
В моей модели Identity
я анализирую проходы AuthHash
omniauth в действии create_with_omniauth и создаю отдельную логику для каждого типа провайдера, чтобы при необходимости я мог заглянуть глубже в возвращаемую хеш-схему.
Если я raise auth.to_yaml
выведу структуру, я вижу заголовок 'x-access-level', который мне хотелось бы прочитать, но я не знаю, как заглянуть в объект response: Net::HTTPOK
, чтобы перейти на следующий уровень структуры.
Это структура авторизации, вырезая некоторые ненужные детали
--- !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, если необходимо выполнить verify_credentials
вызов внутри модели Identity (поскольку Twitter добавляет заголовок x-access-level к каждому ответу, но даже при таком подходе я бы не знал, как читать возвращаемые заголовки для чтения заголовка x-access-level.