위 챗 테스트 번호 개발 의 7 사용자 지리 적 위치 획득

4652 단어 위 챗 개발

단계 1: 귀속 도 메 인 이름  http: / 를 추가 하지 않도록 주의 하 세 요.
 
微信测试号开发之七 获取用户地理位置_第1张图片
 
STEP 2: js 파일 도입
-- JS 인 터 페 이 스 를 호출 해 야 하 는 페이지 에 다음 JS 파일 을 도입 한다. (https 지원)http://res.wx.qq.com/open/js/jweixin-1.2.0.js
 

단계 3: ajax 를 통 해 파 라 메 터 를 가 져 오고 config 인터페이스 주입 권한 검증 설정 을 완성 합 니 다.
 
 
-- ajax 요청
 
$(function() {
	
	//       url
	var url = location.href.split('#')[0];
	$.ajax({
		type : "GET",
		url : "signature.action?url=" + url,
		dataType:"json",
		success : function(data) {
			wx.config({
				debug : true, //       ,     api         alert  ,         ,   pc   ,       log  ,  pc      。
				appId: data.appid, //   ,        
      	                        timestamp: data.timestamp,  //   ,        
      	                        nonceStr: data.nonceStr,  //   ,        
      	                        signature: data.signature,   //   ,  ,   1
				jsApiList : [ 
				                'checkJsApi',
						'openLocation',//                 
						'getLocation' //         
				]  //   ,     JS    
			});
		}
	});
	
	});

 
-- 백 스테이지 코드
 
 
 
주: jsapi - ticket 의 획득 은 앞에서 말 했 듯 이 여기 서 가 져 왔 습 니 다.
 
@RequestMapping(value = "signature", method = RequestMethod.GET)
	@ResponseBody 
	public Map createSignature(@RequestParam String url) 
	{
	  System.out.println("RestFul of createSignature parameters url:"+url);
	  
	  return SignatureUtil.sign(tokenService.getJsapi_ticket(), url);
	}

 
 
 
public static Map sign(String jsapi_ticket, String url) {
	        Map ret = new HashMap();
	        String nonce_str = create_nonce_str();
	        String timestamp = create_timestamp();
	        String str;
	        String signature = "";
	 
	        //             ,     
	        str = "jsapi_ticket=" + jsapi_ticket +
	                  "&noncestr=" + nonce_str +
	                  "×tamp=" + timestamp +
	                  "&url=" + url;
	 
	        try
	        {
	            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
	            crypt.reset();
	            crypt.update(str.getBytes("UTF-8"));
	            signature = byteToHex(crypt.digest());
	        }
	        catch (NoSuchAlgorithmException e)
	        {
	            e.printStackTrace();
	        }
	        catch (UnsupportedEncodingException e)
	        {
	            e.printStackTrace();
	        }
	 
	        ret.put("url", url);
	        ret.put("jsapi_ticket", jsapi_ticket);
	        ret.put("nonceStr", nonce_str);
	        ret.put("timestamp", timestamp);
	        ret.put("signature", signature);
	        ret.put("appid", WeChatInfo.WX_APPID);
	 
	        return ret;
	    }
	    
	    private static String byteToHex(final byte[] hash) {
	        Formatter formatter = new Formatter();
	        for (byte b : hash)
	        {
	            formatter.format("%02x", b);
	        }
	        String result = formatter.toString();
	        formatter.close();
	        return result;
	    }
	 
	    private static String create_nonce_str() {
	        return UUID.randomUUID().toString();
	    }
	 
	    private static String create_timestamp() {
	        return Long.toString(System.currentTimeMillis() / 1000);
	    }
	     
	    //             access_token    
	    public static String getTime(){
	        Date dt=new Date();
	        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        return sdf.format(dt);
	    }

 
STEP 4: ready 인터페이스 처 리 를 통 해 성공 적 으로 검증
 
 
wx.ready(function() {
		//       
		wx.getLocation({
			success : function(res) {
				var latitude = res.latitude; //   ,   ,   90 ~ -90
                            var longitude = res.longitude; //   ,   ,   180 ~ -180。
                            var speed = res.speed; //   ,  /   
                            var accuracy = res.accuracy; //     
			},
			fail : function(res) {
				alert("      ");
			}
		});
	});

STEP 5: error 인터페이스 처리 실패 검증
 
	wx.error(function(res) {
		alert("      ");
	}); 

 
 

좋은 웹페이지 즐겨찾기