Twilio-video в приложении Ruby -on-Rails: Как преобразовать строку токена в объект `Twilio :: JWT :: AccessToken`? - PullRequest
0 голосов
/ 20 апреля 2020

В своем приложении я добавил в модель пользователя поле twilio_video_token в виде строки.
Когда наступает момент создания токена, связанного с указанным c пользователем, я делаю это:

token = Twilio::JWT::AccessToken.new ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_API_KEY"], ENV["TWILIO_API_SECRET"], ttl: 3600, identity: @user.name
@user.twilio_video_token = token.to_jwt
@user.save

Затем, позже в моем приложении, у меня есть экземпляр определенного пользователя c.
Итак, я получаю доступ к его токену так: @user.twilio_video_token, но это строка, поэтому я невозможно прочитать информацию, хранящуюся в токене (например, identity или grants).
Как преобразовать эту строку в объект Twilio::JWT::AccessToken?


Что я пробовал:
Использование 'jwt' gem

@token = JWT.decode current_user.twilio_video_token, ENV["TWILIO_API_SECRET"], true, { algorithm: 'HS256' }

Но это беспорядок ...
Когда я печатаю @token, я вижу identity в grants! !

[{"jti"=>"SK****", "grants"=>{"identity"=>"Sylvain"}, "iss"=>"SK****", "nbf"=>1587406278, "exp"=>1587409878, "sub"=>"AC***"}, {"cty"=>"twilio-fpa;v=1", "typ"=>"JWT", "alg"=>"HS256"}]

Должен признаться, я вижу Twilio do c как огромный лабиринт! Я в это, но я не могу сказать, где я нахожусь!

Большое спасибо за вашу помощь
Сильвен

1 Ответ

0 голосов
/ 21 апреля 2020

Вам не хватает аргумента массива предоставления для Twilio::JWT::AccessToken.new Он должен выглядеть следующим образом:

token = Twilio::JWT::AccessToken.new(
  ENV["TWILIO_ACCOUNT_SID"], 
  ENV["TWILIO_API_KEY"], 
  ENV["TWILIO_API_SECRET"],
  [grant],  
  ttl: 3600, 
  identity: @user.name
)

, где grant может быть Twilio::JWT::AccessToken::VoiceGrant.new в качестве примера.

См. Twilio API: токены доступа

Я никогда не использовал API Twilio, но для меня это выглядит так, как будто вы не должны сохранять токен в записи пользователя, потому что эти токены имеют TTL, что означает, что вы должны иметь обновлять пользовательскую запись каждый раз при смене токена.

Надеюсь, это поможет.

Bests Flo

...