将刷新令牌存储在Cookie中

时间:2018-09-26 10:56:56

标签: botframework direct-line-botframework

我正在通过调用DirectLine Api(POST / v3 / directline / tokens / generate)获得的令牌初始化聊天。我将此令牌存储在cookie中,并使用它来恢复对话。 我的问题是,直线在30分钟后会自动刷新令牌,但我找不到保存新令牌的方法。 有谁知道我该如何保存新令牌?

预先感谢

1 个答案:

答案 0 :(得分:1)

订阅DirectLine的 conectionStatus 可以监听 ConnectionStatus.Online ,该链接在 ConnectionStatus.ExpiredToken 之后触发。然后,更新cookie:

directLine.connectionStatus$.subscribe(connectionStatus => {
    if (connectionStatus === ConnectionStatus.Online) {
      setTokenCookie(this.token);
    }
  });

参考DirectLineJs的来源: https://github.com/Microsoft/BotFramework-DirectLineJS/blob/master/src/directLine.ts#L473

 public reconnect(conversation: Conversation) {
        this.token = conversation.token;
        this.streamUrl = conversation.streamUrl;
        if (this.connectionStatus$.getValue() === ConnectionStatus.ExpiredToken)
            this.connectionStatus$.next(ConnectionStatus.Online);
    }