本篇文章为大家展示了使用Java怎么在微信公众平台中获取地理位置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联专注于芒康企业网站建设,自适应网站建设,商城建设。芒康网站建设公司,为芒康等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
Java的特点有哪些
Java的特点有哪些 1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 2.Java具有简单性、面向对象、分布式、安全性、平台独立与可移植性、动态性等特点。 3.使用Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
一、JS-SDK引入
1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”,和网页授权一样只是个域名。
2.在需要调用JS接口的页面引入如下JS文件之一
二、通过config接口注入权限验证配置
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});首先生成这个signature之前需要获取到一个临时票据jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,同样也需要个中控服务器控制刷新。
1、获取临时票据
封装返回结果
package com.phil.wechatauth.model.resp;
import com.phil.common.result.ResultState;
/**
* jsapi_ticket是公众号用于调用微信JS接口的临时票据
* @author phil
* @date 2017年8月21日
*
*/
public class JsapiTicket extends ResultState {
/**
*
*/
private static final long serialVersionUID = -357009110782376503L;
private String ticket; //jsapi_ticket
private String expires_in;
public String getTicket() {
return ticket;
}
public void setTicket(String ticket) {
this.ticket = ticket;
}
public String getExpires_in() {
return expires_in;
}
public void setExpires_in(String expires_in) {
this.expires_in = expires_in;
}
}获取方法
/**
* 获取jsapi_ticket 调用微信JS接口的临时票据
* @return
*/
public String getTicket(String accessToken) {
JsapiTicket jsapiTicket = null;
Map params = new TreeMap();
params.put("access_token",accessToken);
params.put("type", "jsapi");
String result = HttpReqUtil.HttpDefaultExecute(HttpReqUtil.GET_METHOD, WechatConfig.GET_TICKET_URL, params,"");
if(StringUtils.isNotBlank(result)){
jsapiTicket = JsonUtil.fromJson(result, JsapiTicket.class);
}
if(jsapiTicket.getErrcode()==0){
return jsapiTicket.getTicket();
}
return null;
} 2、生成签名并返回参数
signature生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
string1示例如下
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
这里有个坑,页面是nonceStr,但是签名的字段是noncestr,注意大小写
简单封装下JS-SDK config配置信息
package com.phil.wechatauth.model.resp;
/**
* JS-SDK的页面配置信息
* @author phil
* @date 2017年8月22日
*
*/
public class JsWechatConfig {
private String appId;
private long timestamp;
private String noncestr;
private String signature;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public String getNoncestr() {
return noncestr;
}
public void setNoncestr(String noncestr) {
this.noncestr = noncestr;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
}添加配置信息到页面
/**
*
*/
package com.phil.wechatauth.controller;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.phil.common.config.SystemConfig;
import com.phil.common.config.WechatConfig;
import com.phil.common.util.DateTimeUtil;
import com.phil.common.util.PayUtil;
import com.phil.common.util.SignatureUtil;
import com.phil.wechatauth.model.resp.JsWechatConfig;
import com.phil.wechatauth.service.WechatAuthService;
/**
* JS-SDK
* @author phil
* @date 2017年8月21日
*
*/
@Controller
@RequestMapping("/auth")
public class WechatAuthController {
@Autowired
private WechatAuthService wechatAuthService;
/**
* 获取地理位置
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/getLocation")
public String getLocation(HttpServletRequest request) throws Exception{
JsWechatConfig jsWechatConfig = new JsWechatConfig();
jsWechatConfig.setAppId(WechatConfig.APP_ID);
jsWechatConfig.setTimestamp(DateTimeUtil.currentTime());
jsWechatConfig.setNoncestr(PayUtil.createNonceStr());
SortedMap签名方法
/** * 通过Map中的所有元素参与签名 * * @param map 待参与签名的map集合 * @params apikey apikey中 如果为空则不参与签名,如果不为空则参与签名 * @return */ public static String createSha1Sign(SortedMap map, String apiKey, String characterEncoding) { String result = notSignParams(map, apiKey); MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(result.getBytes()); result = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return result; }
其他的签名方法
三、通过ready接口处理成功验证
以上执行完成,进入的完整的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>获取地理位置
上述内容就是使用Java怎么在微信公众平台中获取地理位置,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
网站栏目:使用Java怎么在微信公众平台中获取地理位置
分享链接:http://www.jxjierui.cn/article/gpghji.html


咨询
建站咨询
