使用阿里百川云旺实现即时通讯

本次场景:
1.ios端注册用户同时需要生成用户的云旺账号;
2.ios端登陆时需要返回用户的云旺账号信息,以便于用户再ios端通讯。
所以,服务端只需要实现两个功能:生成云旺账号和获得云旺账号信息。

准备工作:
1.使用淘宝账号登陆淘宝开放平台(http://baichuan.taobao.com/doc2/detail.htm?articleId=102623&docType=1&treeId=41#s5),
申请appkey和appsecret等相关信息;
2.使用key和secret在在线调试通过,地址如下:
(http://open.taobao.com/apitools/apiTools.htm?spm=a3c0d.7629140.0.0.7f30be48R34vap&catId=20654&apiId=24164&apiName=taobao.openim.users.add&scopeId=)
e51d300d5b9e32922d3f48f6652421e7554.jpg
3.测试通过后,使用申请的账号信息登陆后,下载百川sdk开发包(下载需要账号信息、手机的认证,最新的电信199号段不识别);
4.通过maven方式继承sdk到项目中(可参考博客“阿里大于sdk的集成”)。

具体代码如下:

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.domain.Userinfos;
import com.taobao.api.request.OpenimUsersAddRequest;
import com.taobao.api.request.OpenimUsersGetRequest;
import com.taobao.api.request.OpenimUsersUpdateRequest;
import com.taobao.api.response.OpenimUsersAddResponse;
import com.taobao.api.response.OpenimUsersGetResponse;
import com.taobao.api.response.OpenimUsersUpdateResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

import static com.kevin.common.util.MD5.getMD5;
import static com.kevin.common.util.RandomUtil.generateRandomNum;

/**
 * ChatUtil
 *
 * @author 李阳
 * @description:阿里百川.云旺即时聊天api
 * @date 2018/9/11
 * im.url=http://gw.api.taobao.com/router/rest
 * im.key=25063215
 * im.secret=1e397e6c4d3bf573442152b4b46cc115
 */
@Component
public class ChatUtil {

    /*正式环境url */
    @Value("${im.url}")
    private String url;

    /*appkey*/
    @Value("${im.key}")
    private String key;

    /*appsecret*/
    @Value("${im.secret}")
    private String secret;

    private static TaobaoClient client;

    /*
     * addYWUser
     * @description:添加单个y云旺账号,返回userid集合
     * @author 李阳
     * @date 2018/9/11
     * @params []
     * @return java.lang.String userId
     */
    public List<String> addYWUser(String nick, String psw) throws ApiException {
        if (null == client) {
            client = new DefaultTaobaoClient(url, key, secret);
        }
        OpenimUsersAddRequest req = new OpenimUsersAddRequest();
        List<Userinfos> list2 = new ArrayList<Userinfos>();
        Userinfos obj3 = new Userinfos();
        list2.add(obj3);
        obj3.setNick(nick.trim());
        obj3.setUserid("imuser".concat(generateRandomNum(6)));
        obj3.setPassword(getMD5(psw.trim()));
        // obj3.setName(obj3.getNick());
        // obj3.setIconUrl("http://xxx.com/xxx");
        // obj3.setEmail("uid@taobao.com");
        // obj3.setMobile("18600000000");
        // obj3.setTaobaoid("tbnick123");
        // obj3.setRemark("demo");
        // obj3.setExtra("{}");
        // obj3.setCareer("UNKNOW");
        // obj3.setVip("{}");
        // obj3.setAddress("UNKNOW");
        // obj3.setAge(0l);
        // obj3.setGender("UNKNOW");
        // obj3.setWechat("UNKNOW");
        // obj3.setQq("UNKNOW");
        // obj3.setWeibo("UNKNOW");
        req.setUserinfos(list2);
        OpenimUsersAddResponse rsp = client.execute(req);
        System.out.println(rsp.getBody());
        return rsp.getUidSucc();
    }

    /* 
     * getYWUser 
     * @description:获得指定userids的用户信息
     * @author 李阳
     * @date 2018/9/11
     * @params [userIds] 多个userid的字符串使用“,”分割
     * @return java.util.List<com.taobao.api.domain.Userinfos>
     */
    public List<Userinfos> getYWUser(String userIds) throws ApiException {
        if (null == client) {
            client = new DefaultTaobaoClient(url, key, secret);
        }
        OpenimUsersGetRequest req = new OpenimUsersGetRequest();
        req.setUserids(userIds.trim());
        OpenimUsersGetResponse rsp = client.execute(req);
        return rsp.getUserinfos();
    }

    /* 
     * updateYWUser 
     * @description:更新用户昵称或密码
     * @author 李阳
     * @date 2018/9/11
     * @params [userId, nick, psw]
     * @return java.util.List<java.lang.String>
     */
    public List<String> updateYWUser(String userId, String nick, String psw) throws ApiException {
        if (null == client) {
            client = new DefaultTaobaoClient(url, key, secret);
        }
        OpenimUsersUpdateRequest req = new OpenimUsersUpdateRequest();
        List<Userinfos> list2 = new ArrayList<Userinfos>();
        Userinfos obj3 = new Userinfos();
        list2.add(obj3);
        obj3.setNick(nick.trim());
        obj3.setUserid(userId.trim());
        obj3.setPassword(getMD5(psw.trim()));
        //省略其他不重要的set
        req.setUserinfos(list2);
        OpenimUsersUpdateResponse rsp = client.execute(req);
        System.out.println(rsp.getBody());
        return rsp.getUidSucc();
    }

    // public static void main(String[] args) throws ApiException {
    // System.out.println(addYWUser("kevin","kevin"));
    // System.out.println(JSON.toJSON(getYWUser("imuser914289").get(0)));
    // List<String> up = updateYWUser("imuser914289", "nick", "1234576");
    // System.out.println(up);
    // System.out.println(JSON.toJSON(getYWUser("imuser914289,imuser062100")));
    // }
}

 

详情参考:
http://baichuan.taobao.com/doc2/detail.htm?articleId=102623&docType=1&treeId=41#s5
http://open.taobao.com/api.htm?docId=24157&docType=2

转载于:https://my.oschina.net/kevin2kelly/blog/2049650

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值