android 融云 token,Android客戶端獲取融雲Token方法

看了網上很多客戶端獲取融雲Token的代碼都是IOS的,沒學過的確不想繼續看,Android客戶端獲取方法融雲官方是不推薦這種做法的,不安全,“”因為換取 Token 需要提供 App Key 和 App Secret,在客戶端請求 Token,您的客戶端代碼一旦被反編譯,會導致您的 App Key 和 App Secret 泄露。所以,請務必確保在服務端換取 Token。”這是官方的解釋,不多說,在真正開發上線使用的還是要在服務端處理獲取的。

Android客戶端獲取Token的類,寫得不是很好,這里我只傳一個用戶名參數。

/**

* author:LiWeiQiang

* time:2016/8/9

* description:

*/

public class GetToken {

public static String GetRongCloudToken(String username) {

StringBuffer res = new StringBuffer();

String url = "https://api.cn.ronghub.com/user/getToken.json";

String App_Key = "xxxxxx"; //開發者平台分配的 App Key。

String App_Secret = "xxxxxx";

String Timestamp = String.valueOf(System.currentTimeMillis() / 1000);//時間戳,從 1970 年 1 月 1 日 0 點 0 分 0 秒開始到現在的秒數。

String Nonce = String.valueOf(Math.floor(Math.random() * 1000000));//隨機數,無長度限制。

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 = new ArrayList(1);

nameValuePair.add(new BasicNameValuePair("userId",username));

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();

}

UserRespone userRespone = JSON.parseObject(res.toString(), UserRespone.class);

Logger.i(userRespone.getCode()+"");

return userRespone.getToken();

}

//SHA1加密//http://www.rongcloud.cn/docs/server.html#通用_API_接口簽名規則

private 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();

}

}

網絡請求是個耗時操作,不能再主線程中操作,你們懂的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值