• 环信web、uniapp、微信小程序SDK报错详解---登录篇


    项目场景:


    记录对接环信sdk时遇到的一系列问题,总结一下避免大家再次踩坑。这里主要针对于web、uniapp、微信小程序在对接环信sdk时遇到的问题。主要针对报错400、404、401、40

     (一)  登录用户报400

    4924c45dc4cdd239c2d9ac3c325b6bce.png

    116e776b1e75407a06cdf80db844e1f1.png

    8d24ff0ed51217a8cab729d7b702e9dc.png

    原因分析:

    从console控制台输出及network请求返回入手分析
    可以看到报错描述invalid password,密码无效,这个时候就需要去排查一下该用户密码填写是否正确

    排查思路:
    因为环信不保存用户的密码,可以在console后台或者调用修改密码的restapi来修改一下密码再重新登录(修改密码目前只有这两种方式)

    9e2a62936c432c9cb96b899708123240.png

    (二) 登录用户报404

    9c6d32e949eb590bf12ef50721f59ddd.png

    0320ed47fcdc62cd8aab660147aa294d.png

    e4978eecdca485ff0e749198ba60c490.png

    原因分析:
    从console控制台输出及network请求返回入手分析
    可以看到报错描述user not found,这个时候就需要去排查一下该用户是否存在于该项目使用的appkey下了
     

    排查思路:
    可以看一下console后台拥有这个用户的appkey和自己项目初始化时用的是否是同一个,若在console后台并没有查到该用户,就要注意这个用户是否真的没有注册

    e02c121cd1011cbcaf4764117c9baf7f.png

    3f1383e3a0955c0bf6d6c87a24e9e067.png

    (三) 登录用户报40、401

    e39eda6b6155912ed0359b8d357d2100.png

    20743b5fc51a041c1eaf8b2b11a86db1.png

    原因分析:
    报错40或者401一般都是token的问题,需要排查一下token是否还在有效期,token是否是当前用户的用户token
    40的报错还有一种情况,用户名密码登录需要排查用户名及密码传参是否都是string类型


    注:此处需要注意用户token和apptoken两种概念
    用户token指的是该用户的token,一般只用于该用户在客户端使用环信 token 登录和鉴权
    app token指的是管理员权限 token,发送 HTTP 请求时需要携带 app token
    token较为私密,一般不要暴露出去

    排查思路:
    排查用户名及密码传参是否都是string类型,这个可以直接将option传参打印出来取一下数据类型看看是否是string
    关于token排查,现在没有合适的办法直接查询token是否还在有效期或者是不是当前用户的token,只能通过api调用看是否报错401,可以在console后台直接获取新的用户token来测试一下

    daf3b2feffcccf076447b4c06e9f17db.png

    是不是当前用户的token也可以找环信的技术支持帮忙查,但在不在有效期他们也查不了

    话外:

    有人遇到为什么已经open成功了但是还会报错?

    这里要注意open只能证明获取到了token,证明不了已经建立了websocket连接,只有触发onOpened或者onConnected回调 只有onOpened或者onConnected回调触发,才算真正与环信建立连接。所以也不能在open返回的success或者.then中做任何逻辑处理,此外还要注意监听回调一定要放在调用api之前,在调用任何一个api时都要保证监听挂载完毕,包括open

    如何判断自己是否在登录状态

    可以用以下三种方法中的一种判断当前用户是否在登录状态~
    1、WebIM.conn方法下有一个logOut字段,该字段为true时表明未登录状态,该字段为false时表明登录;
    2、WebIM.conn.isOpened () 方法有三个状态,undefined为未登录状态,true为已登录状态,false为未登录状态,可以根据这三个状态去判断是否登录;
    3、通过onOpened 这个回调来判断,只要执行了就说明登录成功了,输出的话,输出的是undefined


    三者选其一判断登录状态

    相关文档:

    注册环信:https://console.easemob.com/user/register

    集成文档:产品概述 | 环信 IM 文档

    社区支持:环信开发者社区-为移动开发者提供IM服务 - IM Geek开发者社区-移动开发者社区-开源社区-IM Geek官网

  • 相关阅读:
    弘辽科技:拼多多选品的方式有哪些?有什么选品技巧?
    iOS16新特性:实时活动-在锁屏界面实时更新APP消息 | 京东云技术团队
    C语言指针精简版(三)
    微软将JavaScript API引入 Excel
    【C++模块实现】| 【09】线程模块及线程池的实现
    JAVA房地产管理系统登录计算机毕业设计Mybatis+系统+数据库+调试部署
    掌动智能:性能测试工具优势有哪些
    九、MySQL之视图的介绍
    redis探索之缓存一致性
    CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)
  • 原文地址:https://blog.csdn.net/huan132456765/article/details/133709231