用Token-Flutter连接 Agora

用户希望数据保密并免受入侵。在 webRTC 中,我们看到大量敏感数据通过网络传播,因此,保护用户数据安全就变得非常重要。那我们应该提供哪种方法更适合确保用户数据安全呢?

答案是使用Token。Token是用户加入RTC频道或登录RTM系统时用于认证的动态密钥,它是一个定时字符串,需要在设定的时间间隔即24 小时以内重新生成。

在本教程中,我们将学习如何生成自己的Token,并从服务器中获取,然后使用生成的Token加入频道。你可以部署自己的服务器来生成Token,也可以使用本示例,在本教程中,我们将使用此示例来制作我们的Token服务器。你可以按照 README.md 文件中的说明轻松部署同一台服务器。

要求

我们将使用视频通话Demo作为我们的基础,在此基础上,我们将添加Token服务以加入频道。你可以在声网Blog阅读更多解决方案。

与Token连接

生成Token服务器很简单,只需使用以下字段向你的服务器发送 GET 请求:

  • 频道名称:每个Token都与一个频道名称相关联。要进入一个频道,所有用户都应该持有相同的Token值。
  • UID:UID 是唯一用于区分频道中每个用户的整数值。将 0 传递给 UID ,这允许 Agora 从服务器端为你生成一个 UID。
  • 截止时间:由于Token持有动态值,因此需要等一会再刷新。

这个值需要在你在加入频道之前生成,因为你需要把它传递给 joinChannel() 方法。

生成Token

注意:如果你正在运行 android 模拟器并尝试访问在本地运行的token服务器,可使用 url: http : //10.0.2.2。为什么?

现在你可以在加入 joinChannel() 方法之前调用 getToken() 函 数,具体如下所示:

await getToken();
await _engine.joinChannel(token, widget.channelName, null, 0);

保持连接

Token是一个动态值,有效期最长为 24 小时,24小时之后,就需要重新生成该值,你在24小时内可以使用任何帧。在这期间,你需要生成一个新的Token

当用户的Token还有不到30秒就到期时,Agora 会回调 tokenPrivilegeWillExpire() 来注册该Token。我们使用这个回调,然后通过再次调用我们的 getToken() 函数来生成一个新的Token。有了新的Token值后,我们需要使用它来保持连接,这可以通过调用 renewToken() 方法来完成。

更新Token

结论

安全性对于任何 webRTC 应用程序都是必不可少的。当前运行或正在开发中的任何应用程序都应使用Token。使用本教程中给出的方法,你可以快速向应用程序添加Token并确保你应用程序安全性。

点击GitHub仓库获取此应用程序的完整代码。

原文作者 Meherdeep Thakur
原文链接 https://www.agora.io/en/blog/connecting-to-agora-with-tokens-flutter/

推荐阅读
相关专栏
SDK 教程
164 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。