# 获取用户信息

一般JS-SDK中的接口,只要业务页面是在U聊中打开,即可调用。但用户信息属于敏感内容,需要对接业务有申请U聊公众号,和搭建自己的业务后台。

# 准备工作

  1. 申请U聊公众号
    可通过U聊微服务:公众号自助申请,填写表单后申请,或联系 20634000

  2. 对接U聊后台的业务系统 申请到U聊公众号后,可前往 U聊公众号管理平台 (opens new window) ,查看公众号对应的appSecret等开发字段。 查看公众号开发字段
  3. 公众号配置业务页面 为保证安全性,业务页面调用接口获取U聊用户信息时,U聊会判断页面是否通过业务对应的公众号打开。若不是,则无法获取用户信息。
    可通过公众号管理平台中自定义菜单进行页面链接的设置,或直接在与公众号的会话中,发送链接消息,点击进入页面

# JS接口

UPCHAT.M.NAPI.getSecurity(success, fail)

在成功回调中,拿到security值,再提交给业务后台。业务后台将security和公众号的appSecret一并发送至U聊后台,验证通过后,得到用户信息。 具体见 后端认证接口 checkSecurity

# 业务页面获取用户信息

/**
* getUserInfo 根据校验码获取用户信息
* 声明:以下示例代码仅供联调使用,上生产时请根据不同的异常情况自行处理
*/
var getUserInfo = function() {
   var url = '/upchat-public-demo/api/page/checkSecurity';
   //成功后回调函数 代表流程是正常的,但是还需要判断result.status
   //这里成功后调用了后台checkcode的servlet校验安全码
   var _success = function (result) {
       // 验证校验码
       // AJAX验证校验码,此处接口和参数自行设计和约定
       UPCHAT.M.NAPI.dismiss();
       alert('验证校验码' + result.security);
       /**
        * status 为0 代表服务器返回的值是正确的
        * 其他情况 可以提示为服务器内部错误
        */
       if (result.status == '0') {
           var data = {
               code: result.security
           };
           /**
            * 
            * 拿到验证码后,分为以下几步:
            * 1、去对接系统后台checkSecurity,
            * 2、对接系统的后台会去U聊后台checkSecurity, 
            *      根据返回的值判断是否拿到用户信息,U聊后台返回码:
            *      "0", "成功"
            *      "99", "非法请求" 代表用户没权限,或者公众号配置有问题
            *      "100", "登录已失效,请重新登录"
            *   对接系统自行处理,为0代表拿到用户信息,其他代表未拿到,例如用户没有权限,后台就会返回99
            * 3、前端根据对接系统的返回值,展示给用户
            *   例如:"0" 代表成功 "99"代表用户无权限
            */
           $.post(url, data, function (ret) {
               if (ret.status == '0') {
                   alert('用户信息:' + JSON.stringify(ret.content));
               } else if (ret.status == '99') {
                   alert('用户无权限')
               } else {
                   alert('服务器内部错误');
               }
           });
       } else {
           alert(JSON.stringify(result));
           alert('服务器内部错误');
       }
   };

   //失败后回调函数 代表客户端失败,或者服务器给客户端返回500之类的错误
   var _fail = function (fal) {
       UPCHAT.M.NAPI.dismiss();
       /**
        * ios: 
        * fal '版本不支持', 则提示用户去下载最新版U聊
        * android
        * fal 'Class not found'或者'Invalid action' ,则提示用户去下载最新版U聊
        * toNewApp()
        * 其他情况,提示用户错误信息
        */
       if (fal == '版本不支持'  || fal == 'Class not found' || fal == 'Invalid action') {
           alert('需更新U聊客户端');
       } else {
           alert(fal);
       }
   };
   UPCHAT.M.NAPI.showLoadingView();
   UPCHAT.M.NAPI.getSecurity(_success, _fail);
}
上次更新: 11/15/2023, 10:22:48 AM