С чего начать запрос аутентификации для активного ресурса при работе с OAuth - PullRequest
0 голосов
/ 17 ноября 2018

У меня проблемы с подключением нескольких точек с OAuth и Active Resource.Вот что я знаю: Документация Active Resource говорит мне, что я могу установить токены аутентификации для самой модели ActiveResource следующим образом:

ActiveResource::Base.connection.auth_type = :bearer
ActiveResource::Base.connection.bearer_token = @bearer_token
class Estimate < ActiveResource::Base
    self.connection.auth_type = :bearer
    self.connection.bearer_token = @bearer_token
    self.site = "https://apistaging.uship.com/v2/estimate"
end

Кроме того, в полностью отдельной части моего кода я могу получитьМне нужен токен на предъявителя со следующими основными HTTP-запросами (без указания моего действительного идентификатора клиента и секрета для обеспечения конфиденциальности):

uri = URI('https://apistaging.uship.com/oauth/token')
res = Net::HTTP.post_form(uri, 'grant_type' => 'client_credentials', 'client_id' => 'XXXXXXXXXXXXXXXXXXX', 'client_secret' => 'YYYYYYY')

Когда я печатаю res, он дает мне действительный токен, который я проверил,Это выглядит так:

{
    "access_token": "AAAAAAAAAAAAAAAAAAAAA",
    "token_type": "bearer",
    "expires_in": 600,
    "refresh_token": "BBBBBBBBBBBBBBBBBBBBB"
}

Но где мне запустить этот вызов?Я предполагаю, может быть какой-то before_filter на любых контроллерах, которые будут использовать Active Resource?И если так, как передать access_token этой переменной @bearer_token в моей модели ActiveResource.Кроме того, я знаю, что срок действия этого токена истекает через 10 минут, поэтому каким-то образом этот код должен будет знать, как снова запустить токен oauth, в нужное время или передать токены обновления, когда Active Resource используется менее чем за 10 минут.интервалы.Я очень удивлен, что не могу найти простой учебник для этого онлайн.Если кто-то считает, что я должен использовать драгоценный камень для автоматизации этого, дайте мне знать, какой именно, потому что все, что я нашел, не работает на рельсах 5.

1 Ответ

0 голосов
/ 05 декабря 2018

Если вы расширите ActiveResource следующим образом https://gist.github.com/acherukuri/82d221c9c3aed73e76299cbf4173fee5 с помощью https://github.com/oauth-xx/oauth-ruby,, вы сможете совершать вызовы в свои службы с использованием гема OAuth вместо ActiveResource, но ответ можно передать ActiveResource, чтобы вы все равно сможете восстанавливать ошибки, используя стиль ActiveResource::ServerError в своих контроллерах. Таким образом, ваш контроллер не будет загрязнен генерацией токенов OAuth, а ActiveResource сгенерирует новый токен OAuth, только если срок его действия истекает. (тот же токен будет использоваться для последующих вызовов до истечения срока его действия)

...