开放平台中oauth认证中请求参数签名的算法

原创 2015年07月10日 09:26:00

原文:开放平台中oauth认证中请求参数签名的算法

源代码下载地址:http://www.zuidaima.com/share/1572934678825984.htm

Java生成签名示例

				     // 定义申请获得的appKey和appSecret
				     String appkey = "XXXXXXXX";
				     String secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
				     String apiUrl = "http://api.dianping.com/v1/business/find_businesses";
				     
				     // 创建参数表
				     Map<String, String> paramMap = new HashMap<String, String>();
				     paramMap.put("format", "json");
				     paramMap.put("最代码网址", "www.zuidaima.com");
				     paramMap.put("latitude", "31.21524");
				     paramMap.put("longitude", "121.420033");
				     paramMap.put("category", "美食");
				     paramMap.put("region", "长宁区");
				     paramMap.put("limit", "20");
				     paramMap.put("radius", "2000");
				     paramMap.put("offset_type", "0");
				     paramMap.put("has_coupon", "1");
				     paramMap.put("has_deal", "1");
				     paramMap.put("keyword", "泰国菜");
				     paramMap.put("sort", "7");
				 
				     // 对参数名进行字典排序
				     String[] keyArray = paramMap.keySet().toArray(new String[0]);
				     Arrays.sort(keyArray);
				 
				     // 拼接有序的参数名-值串
				     StringBuilder stringBuilder = new StringBuilder();
				     stringBuilder.append(appkey);
				     for (String key : keyArray)
				     {
				         stringBuilder.append(key).append(paramMap.get(key));
				     }
				     
				     stringBuilder.append(secret);
				     String codes = stringBuilder.toString();
				     
				     // 字符串连接示例
				     // XXXXXXXXcategory美食city上海formatjsonhas_coupon1has_deal1keyword泰国菜latitude31.21524limit20longitude121.420033offset_type0radius2000region长宁区sort7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
				     
				     // SHA-1编码, 这里使用的是Apache codec,即可获得签名(shaHex()会首先将中文转换为UTF8编码然后进行sha1计算,使用其他的工具包请注意UTF8编码转换)
				     /*
				      * 以下sha1签名代码效果等同
				      * byte[] sha = org.apache.commons.codec.digest.DigestUtils.sha(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(codes));
				      *  String sign = org.apache.commons.codec.binary.Hex.encodeHexString(sha).toUpperCase(); 
				      */
				     String sign = org.apache.commons.codec.digest.DigestUtils.shaHex(codes).toUpperCase();
				     
				     //签名示例 
				     //7D78381BC58E1DB1DBA4BD965916FE6B4D5DC892
					

JavaScript生成签名示例

// 定义申请获得的appKey和appSecret  
 var appkey = "XXXXXXXX";  
 var secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";  
  
 // 创建参数表  
 var param = {};  
 param["最代码网址"]="www.zuidaima.com";  
 param["latitude"]="31.21524";  
 param["longitude"]="121.420033";  
 param["category"]="美食";  
 param["region"]="长宁区";  
 param["limit"]="20";  
 param["radius"]="2000";  
 param["offset_type"]="2";  
 param["has_coupon"]="1";  
 param["has_deal"]="1";  
 param["keyword"]="泰国菜";  
 param["sort"]="7";  
  
 // 对参数名进行字典排序  
 var array = new Array();  
 for(var key in param)  
 {  
     array.push(key);  
 }  
 array.sort();  
   
 // 拼接有序的参数名-值串  
 var paramArray = new Array();  
 paramArray.push(appkey);  
 for(var index in array)  
 {  
 var key = array[index];  
 paramArray.push(key + param[key]);  
 }  
 paramArray.push(secret);  
   
 // 字符串连接示例  
// XXXXXXXXcategory美食city上海formatjsonhas_coupon1has_deal1keyword泰国菜latitude31.21524limit20longitude121.420033offset_type0radius2000region长宁区sort7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  
   
   
 // SHA-1编码,并转换成大写,即可获得签名  
 var shaSource = paramArray.join("");  
 var sign = new String(toSHA1(shaSource)).toUpperCase();  
   
 //签名示例   
//7D78381BC58E1DB1DBA4BD965916FE6B4D5DC892  

转载:http://developer.dianping.com/app/documentation/signature

另外附上纯java实现的SHA1算法。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

开放平台中oauth认证中请求参数签名的算法

Java生成签名示例 01 // 定义申请获得的appKey和appSecret 02 String appke...

新浪开放平台---oauth2认证流程 casperjs自动登录和授权 api需要注意的问题及bug

官网 http://open.weibo.com/ API http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3_V2 SDK http://open.w...

手把手教你如何通过OAuth2.0新浪开放平台认证新浪用户-java

新浪微博·开放平台: http://open.weibo.com/ 自己想写个应用需要新浪微博的用户认证,弄了1天各种错误,参考了大量网上的解释终于成功, 经验写下来和大家分享。 一、创...

淘宝开放平台请求参数的拼接方式

针对淘宝开放平台接口的调用,用SDK比较方便。 但如果不想引用淘宝的SDK,以更加简单的方式该如何调用呢? 下面用taobao.trades.sold.get(获取淘宝订单交易记录)这个API来说明一...

腾讯开放平台的Oauth2.0协议开发

文章转自http://wiki.open.qq.com/wiki/website/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_OAuth2.0

从实现iPhone的OAuth封装看国内互联网和开放平台

转自:http://blog.csdn.net/arthurchenjs/article/details/6567563 由于工作需要,我最近接触了现在开放平台基本都会使用的OAuth协...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)