Я пытаюсь написать простой клиент OAuth2 на основе драгоценного камня oauth2. Идея состоит в том, чтобы хранить токен доступа в сеансе и проверять, не истекает ли он до каждого запроса.Как проверить, истек ли токен
Следующий код для получения нового маркера выглядит следующим образом:
client = OAuth2::Client.new(
'26b8e5c92367d703ad35a2fc16b14dc93327a15798068ccba473aa2e3d897883',
'b16079915cdc20b5373f1601e31cece5a84274f772cfd89aec12c90fd110775e',
site: 'http://localhost:3000'
)
client.client_credentials.get_token.expired?
и это работает прекрасно. Запрос на мой api уволен, и последняя строка показывает, истек ли токен или нет. Проблема заключается в том, когда я пытаюсь восстановить маркер состояния сам:
OAuth2::AccessToken.new(client, session[:api_token]).expired?
Эта строка кода не будет срабатывать запрос на мой апи и, в причине, что не имеет ни малейшего представления о том, что маркер времени жизни, expires_at парам или что-то еще. Все, кроме 'лексем Парам равна нулю, так expired?
метод всегда возвращает false
:
#<OAuth2::AccessToken:0x007fad4c9e2e28 @client=#<OAuth2::Client:0x007fad4ddb7160 @id="26b8e5c92367d703ad35a2fc16b14dc93327a15798068ccba473aa2e3d897883", @secret="b16079915cdc20b5373f1601e31cece5a84274f772cfd89aec12c90fd110775e", @site="http://localhost:3000", @options={:authorize_url=>"/oauth/authorize", :token_url=>"/oauth/token", :token_method=>:post, :connection_opts=>{}, :connection_build=>nil, :max_redirects=>5, :raise_errors=>true}, @client_credentials=#<OAuth2::Strategy::ClientCredentials:0x007fad4ddb6f80 @client=#<OAuth2::Client:0x007fad4ddb7160 ...>>, @connection=#<Faraday::Connection:0x007fad4ddb6738 @headers={"User-Agent"=>"Faraday v0.8.8"}, @params={}, @options={}, @ssl={}, @parallel_manager=nil, @default_parallel_manager=nil, @builder=#<Faraday::Builder:0x007fad4ddb6620 @handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTP:0x007fad4ddb60d0 URL:http://localhost:3000/>, @proxy=nil, @app=#<Faraday::Request::UrlEncoded:0x007fad4ddb4190 @app=#<Faraday::Adapter::NetHttp:0x007fad4ddb4280 @app=#<Proc:[email protected]/usr/local/rvm/gems/ruby-2.0.0-p247/gems/faraday-0.8.8/lib/faraday/connection.rb:93 (lambda)>>>>>, @token="114781bdace77fa7f4629e2b42dbe68ac73326728dddc8102b9c2269e3e86a36", @refresh_token=nil, @expires_in=nil, @expires_at=nil, @options={:mode=>:header, :header_format=>"Bearer %s", :param_name=>"access_token"}, @params={}>
я делаю что-то неправильно, или в том, что какая-то ошибка? Чтобы суммировать все это: мне нужно проверить, истек ли токен, хранящийся в сеансе (как строка), или нет.
достигнет ли ваш код этой строки? – screenmutt
да, это достигает – mbajur
И это дает ошибку? Каков именно результат? – screenmutt