Когда я выполняю Twilio.Device(token)
, я получаю сообщение об ошибке: {code: 31204, message: "JWT token parsing failed"}
.
Этот сервис (https://jwt.io/#debugger-io) способен декодировать эти токены, но мой js-клиент этого не делает. Кроме того, я знаю, что эти токены можно анализировать с помощью SDK для iOS и Android, поэтому я заинтересован что не так с моим js-приложением?
Я могу поделиться результатами разбора # debugger-io:
[header]{
"alg": "HS256",
"cty": "twilio-fpa;v=1",
"typ": "JWT"
}
[payload]{
"exp": 1553784490,
"grants": {
"identity": "24e7e8b3-bb57-5c6e-8f38-9964e6d4edf7",
"video": {
"room": "d45373f6-5c78-5d8f-997f-c6f070be940d"
}
},
"iat": 1553780890,
"iss": "// some string here",
"jti": "// some string here",
"sub": "// some string here"
}
Я уже пытался запустить Twilio.Device из токена, который получал из quick-start-app, и он отлично работает. Кроме того, я использовал приложение быстрого запуска с моим токеном, и эта ошибка также была нарушена.
Код ниже показывает способ получения токена на клиенте:
class CallService{
constructor(private authService: AuthService, private requestService: RequestService){}
public getCallToken$(callId: string): Observable<{token: string}>{
return this.requestService.post('here is our service-url',{
roomName: callId,
userName: this.authService.user.uuid
}
).pipe(catchError((err: HttpErrorResponse) => {
console.warn(err);
alert(`Can't use calls with those parameters: { roomName: ${callId}, userName: ${this.authService.user.uuid} }`);
return confirm('Try it again?') ? this.getCallToken$(callId) : throwError(err)
}))
}
public createDevice(token: string): Twilio.Device{
console.log(token);
return new Twilio.Device(token, {debug: true})
}
}
// this code with injected CallService
this.callService.getCallToken$('//random-id').subscribe(
{token} => {
const device = this.callService.createDevice(token);
device.on('error', err => console.warn(err));
device.on('ready', d => { // ... })
// ... other manipulations
}
)
Я спросил своих бэкэнд-разработчиков, преобразуют ли они токены из twilio-api, и они сказали «нет».