如何从融云里面获取token,并在浏览器上显示出来。---尽量写的详细

第一次在网上写代码的博客,而且感觉挺长的。稍有错误之处还请指出,谢谢!
下面放的代码也是自己经过了实地检测的。可放心粘贴复制。或作为参考。

这篇文章里面的代码写的很规范,详尽。我只说获取融云的token

链接: link.

这篇文章是直接写的测试程序,没有用到ssm框架,但是还是可以用的。

我先说下写“从融云中获取token”的背景:
我现在是cs架构,就是后台跟app操作的软件。
现在是用userId(用户的id)去融云里面拿一个token。
我用公司的融云账户登录的。

话不多说,直接上代码:

@Controller
@RequestMapping("/page/")
public class ImRongcloudController {
     @Autowired
    private ImRoungcloudService imRoungcloudService;

    /**
     * 获取融云产生的Token ,已成功在浏览器上显示从融云获取的token
     * @param userId
     * @return
     */
    @RequestMapping(value = "getToken")
    @ResponseBody
    public String  getToken(@RequestParam(required = true) String userId
                           // @RequestParam(required = true) String userHead,
                           // @RequestParam(required = true) String userName
                            ) {
        StringBuffer res = new StringBuffer();
        String url = "http://api-cn.ronghub.com/user/getToken.json";
        String App_Key = "kj7swf8ok36e2"; //开发者平台分配的 App Key。
        String App_Secret = "hAfyEhxyFG";//开发者平台分配的App_Secret 。
        String Timestamp = String.valueOf(System.currentTimeMillis() / 1000);//时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的秒数。
        String Nonce = String.valueOf(Math.floor(Math.random() *(99999-10000)+10000));//随机数,无长度限制。

        String Signature = sha1(App_Secret + Nonce + Timestamp);//数据签名。
        //Logger.i(Signature);
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("App-Key", App_Key);
        httpPost.setHeader("Timestamp", Timestamp);
        httpPost.setHeader("Nonce", Nonce);
        httpPost.setHeader("Signature", Signature);
        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
        List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);
       // nameValuePair.add(new BasicNameValuePair("name", userName));//名称(例如使用这个功能的‘张三’)
        nameValuePair.add(new BasicNameValuePair("userId", userId));// 用户id(根据自己的项目,自己生成一个串就行,UUID就行)
       // nameValuePair.add(new BasicNameValuePair("portraitUri", userHead));//头像(存储头像的路径)
        HttpResponse httpResponse = null;
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair, "utf-8"));
            httpResponse = httpClient.execute(httpPost);
            BufferedReader br = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
            String line = null;
            while ((line = br.readLine()) != null) {
                res.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("res=" + res.toString());
        Im_rongcloud im_rongcloudResponse = JSON.parseObject(res.toString(), Im_rongcloud.class);
        imRoungcloudService.insert(im_rongcloudResponse);
        //Logger.i(userRespone.getCode()+"");
        return im_rongcloudResponse.getToken();
    }


}

在这里我解释一下里面的代码意思:
1:String url= “http://api-cn.ronghub.com”; 这个是引用融云token的域名,必须要有这个。而且这个格式是固定的。
这个是融云API的
2:sha1(App_Secret + Nonce + Timestamp);//数据签名。
这个是引用到了 一个算法。
代码如下

public class ShaOnetest {

    //SHA1加密//http://www.rongcloud.cn/docs/server.html#通用_API_接口签名规则
    public static String sha1(String data){
        StringBuffer buf = new StringBuffer();
        try{
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.update(data.getBytes());
            byte[] bits = md.digest();
            for(int i = 0 ; i < bits.length;i++){
                int a = bits[i];
                if(a<0) a+=256;
                if(a<16) buf.append("0");
                buf.append(Integer.toHexString(a));
            }
        }catch(Exception e){

        }
        return buf.toString();
    }

以上这个代码也是粘贴别人的。感谢大佬。
3: httpPost.setHeader(“App-Key”, App_Key);
httpPost.setHeader(“Timestamp”, Timestamp);
httpPost.setHeader(“Nonce”, Nonce);
httpPost.setHeader(“Signature”, Signature);
httpPost.setHeader(“Content-Type”, “application/x-www-form-urlencoded”);
以上这几个代码的意思,建议自己去融云看下什么意思。因为都是有固定格式,并且是获取token必须要用到的。

4: Im_rongcloud im_rongcloudResponse = JSON.parseObject(res.toString(), Im_rongcloud.class);
imRoungcloudService.insert(im_rongcloudResponse);
Im_rongcloud是我工作中的一个类,专门来在融云上获取token。你们是什么类,就改成自己的。
还有因为我这边还要把这个产生的token写进数据库,所以后面还写了一个增加的接口。insert。

以上代码写完以后,tomcat运行,在浏览器上显示是怎样的呢?
如图:
显示的结果

 以上就是怎么从融云中 获取token。
 至于怎么放进数据库,怎么用在其他的代码中,这个就是需要你自己根据业务去做了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值