Ruby on Rails应用程序上的Twilio视频:如何将令牌字符串转换为`Twilio::JWT::AccessT



在我的应用程序中,我在用户模型中添加了一个字段twilio_video_token作为字符串
当创建与特定用户相关联的令牌时,我会这样做:

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

然后,稍后在我的应用程序中,我有一个特定用户的实例
所以我访问他的令牌如下:@user.twilio_video_token,但它是一个字符串,所以我无法读取令牌中存储的信息(如identitygrants(
如何将此字符串转换回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 doc看作一个巨大的迷宫!我很喜欢,但我不知道自己在哪里!

非常感谢您的帮助
Sylvain

您缺少Twilio::JWT::AccessToken.new的grant数组参数它应该看起来像:

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

其中CCD_ 8可以是CCD_。

参见Twilio API:访问代币

我从未使用过Twilio API,但对我来说,似乎不应该将令牌保存到用户记录中,因为这些令牌有一个TTL,这意味着每次令牌更改时都必须更新用户记录。

我希望这能有所帮助。

最佳Flo

最新更新