2016-09-06 4 views
1

Ich verwende Twilios Java helper library, um ein Fähigkeits-Token für meine Angular-App zu generieren, um Anrufe über den Browser zu tätigen. Hier ist der Code:Twilio-Fähigkeits-Token wird länger und länger

public class CapabilityToken { 
    private TwilioCapability capability; 

    public String get(String applicationSid) { 
    capability.allowClientOutgoing(applicationSid); 
    try { 
     String token = capability.generateToken(); 
     // logging happens here 
     return token; 
    } catch (DomainException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

Auf der Schrägseite machen wir einen Aufruf an unsere API ein neues Token zu holen und dann, dass das Gerät zu initialisieren, verwenden.

Twilio.Device.setup(token, {debug: true}); 

Ich bemerkte in the logs, die das Token länger wird und länger als wiederholte Anrufe dieses Token zu erzeugen, hergestellt werden.

Die documentation empfiehlt, jedes Mal, wenn ein neuer Anruf getätigt wird, ein Token zu generieren, aber als ich das versuchte, wurde das Token schnell unbrauchbar, weil es zu lang war. Jetzt hole ich nur das Token beim Laden der Seite, aber das Token wird immer noch sehr lange zu schnell.

Warum passiert das und wo könnte ich falsch liegen?

Antwort

1

Twilio Entwickler Evangelist hier.

Die Art, wie Sie Ihre CapabilityToken Klasse eingerichtet haben, ist das Problem hier. Sie scheinen ein Fähigkeits-Token als Variable auf Klassenebene zu speichern und jedes Mal, wenn Sie get für die Klasse aufrufen, fügen Sie eine weitere Berechtigung für ausgehende Clients hinzu. Deshalb nimmt es jedes Mal an Größe zu. Stattdessen sollten Sie eine neue TwilioCapability jedes Mal erzeugen, etwa so:

public class CapabilityToken { 
    public String get(String applicationSid) { 
    TwilioCapability capability = new TwilioCapability(ACCOUNT_SID, AUTH_TOKEN); 
    capability.allowClientOutgoing(applicationSid); 
    try { 
     String token = capability.generateToken(); 
     // logging happens here 
     return token; 
    } catch (DomainException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

Lassen Sie mich wissen, ob das hilft.

+0

Ah! Das macht sehr viel Sinn. Vielen Dank! Frage: Wäre es in Ordnung, wenn ich die Client-Berechtigung auch einmal setze? Oder muss ich jedes Mal eine neue TwilioCapability erstellen? (Der Grund, den ich stelle, ist, weil ich die Konto SID und das Authentifizierungs-Token entschlüsseln muss und ich würde das lieber einmal machen.) – chinaowl

+1

Sie brauchen jedes Mal eine neue Fähigkeit. Aber warum entschlüsseln Sie die Konto-SID und das Authentifizierungs-Token nicht nur einmal beim Laden Ihrer Anwendung, sondern verwenden Sie sie jedes Mal, um das Fähigkeits-Token zu generieren? – philnash

+0

Ja, das mache ich jetzt. Danke noch einmal! – chinaowl

Verwandte Themen