微信授权

可视化编辑器,alt+1到9键,切换到工具区,tab键,选择按钮,esc键,返回编辑 工具类代码在底部

第一步:获得access_token代码如下(由于token每日有请求上限,建议放到memcache/redis)
Map<String,String> map = new HashMap<String,String>();
map.put(“grant_type”,“client_credential”);
map.put(“appid”,“7654321”);
map.put(“secret”,“1234567”);

String returnStr = HttpUtil.doGet("https://api.weixin.qq.com/cgi-bin/token",map);
JSONObject json = JSONObject.fromObject(returnStr);
String accessToken = json.getString("token");

第二步:根据token获得js临时票据(有效时间7200秒,可以放到memcache)
Map<String,String> map = new HashMap<String,String>();

	map.put(“access_token”,“7654321”);
map.put(“type”,“jsapi”);

String returnStr = HttpUtil.doGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket",map);<pre class="java" name="code">	JSONObject json = JSONObject.fromObject(returnStr);
String ticket= json.getString("ticket");

第三步:对密钥进行sha1加密
long time = System.currentTimeMillis()/1000;
String randomStr = StringUtils.right(String.valueOf(System.currentTimeMillis()), 10);
//特别注意的是调用微信js,url必须是当前页面(转发的不行)
String str = “jsapi_ticket=”+ticket+"&noncestr="+randomStr+“×tamp=”+time+"&url=http://www.baidu.com";

String signature = EncryptUtil.sha1Encrypt(str);

第四步:进行配置(页面)
<script type=“text/javascript” src=“//">http://res.wx.qq.com/open/js/jweixin-1.0.0.js”>//引入js-sdk

HttpUtil
public static String doGet(String url,Map<String,String> params){

	HttpClient client = new HttpClient();
	StringBuilder sb = new StringBuilder(url);
	StringBuilder responseBody = new StringBuilder(url);
	InputStream ins = null;  

	if(params.size() > 0)
		sb.append("?");

	for (Entry<String, String>  map: params.entrySet()) {

		String pramName = map.getKey();
		String values = map.getValue();

		sb.append(pramName+"="+values);
		sb.append("&");
	}

	try {
		GetMethod method = new GetMethod(sb.toString().substring(0, sb.length()));
		int statusCode = client.executeMethod(method);

		if (statusCode == HttpStatus.SC_OK) {  
           			ins = method.getResponseBodyAsStream();  
           			byte[] b = new byte[1024];  
           			int r_len = 0;  
            		while ((r_len = ins.read(b)) > 0) {  
             			responseBody.append(new String(b, 0, r_len, method  
                       		.getResponseCharSet()));  
             		}
		}

	} catch (HttpException e) {
		logger.error(e.toString());
	 } catch (IOException e) {
		 logger.error(e.toString());
	}

	 return responseBody.toString();

}

EncryptUtil

public static String sha1Encrypt(String str){

	StringBuffer sb = new StringBuffer();
	try {
		MessageDigest messageDigest = MessageDigest.getInstance("sha1");
		messageDigest.update(str.getBytes());
		
		 char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; 
		 byte[] bytes= messageDigest.digest();
			int len = bytes.length;
			StringBuilder buf = new StringBuilder(len * 2); 
	        for (int j = 0; j < len; j++) {          
	        	buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); 
	            buf.append(HEX_DIGITS[bytes[j] & 0x0f]); 
	        } 
	} catch (NoSuchAlgorithmException e) {
		
		e.printStackTrace();
	}
	
	return sb.toString();
}


注:必须要绑定域名
方法:先登录<a target=_blank class="external text" href="http://mp.weixin.qq.com/" target="_blank" rel="nofollow">微信公众平台</a>进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 

备注:登录后可在“开发者中心”查看对应的接口权限。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值