在我的应用程序中,我在用户模型中添加了一个字段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
,但它是一个字符串,所以我无法读取令牌中存储的信息(如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 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