위 챗 JS-SDK 위 챗 공유 인터페이스 개발(소개 판)

본 고 는 주로 자신의 개발 과정 을 공유 하고 같은 문제 가 존재 하 는 일부 친구 에 게 약간의 도움 을 주 기 를 바란다.
최근 프로젝트 의 홈 페이지 는 위 챗 을 통 해 친구 나 친구 권 등 을 공유 하 는 기능 을 통 해 공유 사진 등 정 보 를 표시 할 수 없 게 되 었 고,조사 결과 위 챗 버 전이 업그레이드 되 어 js-sdk 로 공유 인 터 페 이 스 를 완성 하 였 으 며,이 기능 효 과 를 신속하게 실현 하기 위해 프런트 js 를 통 해 공유 효 과 를 볼 계획 이다.
위 챗 공식 플랫폼 문 서 를 조회 하여 자신 이 필요 로 하 는 설명 문서 을 찾 고 개발 절 차 를 명 확 히 하 며 문서 캡 처 는 다음 과 같다.

개발 절차:
1.설명 문서 의 완성 절차 에 따라 1.1.1



2.js 파일 도입
공유 페이지 에 js 파일 추가

<html xmlns="http://www.w3.org/1999/xhtml"> 
 <head> 
   <!--        -->
   <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    
   <script src="/commonScripts/jquery-1.5.1.min.js"></script>
	
   <!-- sha1  js  -->
   <script src="/commonScripts/wxShare_sha1.js"></script>
 
  <!--         js  -->
   <script src="/commonScripts/wxShare_data.js"></script>
 
  <!--             js  -->
   <script src="/commonScripts/wxShare.js"></script>
		
 </head> 
 <body id="weixinshare"> 
	      
	 <img 
		style="width:672px; height:345px; cursor:pointer" 
		alt="banner01" 
		src="/mobileimg/123.jpg">
 </body> 
</html>
3.wxShare.js 설정

 var $wx_account = wxdata.wx_account, //      , wxShare_data.js
   $wx_share = wxdata.wx_share;  //       , wxShare_data.js
 
//      
wx.config ({
  debug : false,  // true:      
  appId : $wx_account[0], //   appid
  timestamp : $wx_account[1], //    
  nonceStr : $wx_account[2], //      
  signature : $wx_account[3], //   
  jsApiList : [
    //        API          
    'onMenuShareTimeline',    //         
    'onMenuShareAppMessage', //        
    'onMenuShareQQ',     //    QQ  
    'onMenuShareWeibo'   //        
  ]
});
wx.ready (function () {
  //        
  var shareData = {
    "imgUrl" : $wx_share[0],  //           
    "link" : $wx_share[1],  //     
    "desc" : $wx_share[2],  //     
    "title" : $wx_share[3],  //     
    success : function () { 
 
        //               
 
       //alert("    "); } 
      }; 
    wx.onMenuShareTimeline (shareData); 
    wx.onMenuShareAppMessage (shareData); 
    wx.onMenuShareQQ (shareData); 
    wx.onMenuShareWeibo (shareData);
});
 
 
wx.error(function(res){ 
   // config         error  ,           ,
  //           config debug    ,       res     ,
   //  SPA         。 
  alert("     !!");
});
4,조립 위 챗 의 설정 정보 wxSharedata.js

var wxdata = {
	wx_account : new Array(4),
	wx_share : new Array(4),
	wx_myuser : new Array("appid","appsecret"),
	
	access_token : "", //   
	token_expires_in : "" , //          :s
	jsapi_ticket : "", //   
	ticket_expires_in : "" , //          :s
	url : "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxdata.wx_myuser[0] + "&secret=" + wxdata.wx_myuser[1],
	
    //   access_token 
	// *  *         ,           ,    access_token           ,       access_token
	get_access_token : function (){
			$.ajax({
			type : "GET",
			url : wxdata.url
			dataType : "jsonp", //       ,jsonp       
			cache : false,
		//	jsonp :'callback',
			success : function(msg) { 
			//      {"access_token":"ACCESS_TOKEN","expires_in":7200}
			//      {"errcode":40013,"errmsg":"invalid appid"}
				wxdata.access_token = msg.access_token; //              ,    token_expires_in    7200s
				wxdata.token_expires_in = msg.expires_in; //        :s
				if (access_token != "" || access_token != null) {
					console.log("get access_token success: " + wxdata.access_token);
				} else {
					console.log("get access_token fail " +wxdata.access_token);
				}
			},
			error : function(msg){
				alert("get access_token error!! : ");
			}
		});
	},
	
	//   jsapi_ticket
	// *  *         ,           ,    jsapi_ticket           ,       jsapi_ticket
	get_jsapi_ticket : function(){
		$.ajax({
			type : "GET",
			url : "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + wxdata.access_token +"&type=jsapi",
			dataType : "jsonp",
			cache : false,
			async : false,
			jsonp :'callback',
			success : function(msg) { 
			/* 
				{
					"errcode":0,
					"errmsg":"ok",
					"ticket":"e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
					"expires_in":7200
				} 
			*/
				if(msg.errcode == 0){
					wxdata.jsapi_ticket = msg.ticket; //     ,    ticket_expires_in    7200s
					wxdata.ticket_expires_in = msg.expires_in; //        :s
					console.log("get jsapi_ticket success");
				} else {
					console.log("get jsapi_ticket fail");
				}
			},
			error : function(msg){
				alert("get jsapi_ticket error!!! ");
			}
		});
	},
	//      
	create_signature : function(nocestr,ticket,timestamp,url){
		var signature = "";
		//            key   ASCII      
		var s = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr + "×tamp=" + timestamp + "&url=" + url;
		return hex_sha1(s); 
	},
 
	//               0 < ? < 32 
	create_noncestr : function () {
       var str= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
       var val = "";
      for (var i = 0; i < 16; i++) {
         val += str.substr(Math.round((Math.random() * 10)), 1);
       }
    return val;
  },
	
	//         
	create_timestamp : function () {
    return new Date().getSeconds();
  }
	
}
 
//wxdata.get_access_token(); // 1
wxdata.access_token = "B06fRIti5GDmvNLKsV5OkJ4fU1qd3YyyW0cgwenxhqI7XwmpTrpwY6Uc7nNtnumdJvnPJXcACAVPD"; //2
 
//wxdata.get_jsapi_ticket(); //3
wxdata.jsapi_ticket = "XGEs8VD-_kgoxt8jcijupT7j_EA-nP07ro_MmUNDVD0oR8unfqY4C_YIMXAQvhztlTk8j2A" //4
 
// ----- 5    ------
var timestamp = wxdata.create_timestamp();  // timestamp
var noncestr = wxdata.create_noncestr(); // noncestr
var url = window.location.href;
 
wxdata.wx_account[0] = wxdata.wx_myuser[0]; // appid
wxdata.wx_account[1] = timestamp;  // timestamp
wxdata.wx_account[2] = noncestr; // noncestr
wxdata.wx_account[3] = wxdata.create_signature(noncestr, wxdata.jsapi_ticket ,timestamp ,url);//signature
 
wxdata.wx_share[0] = "http://www.123456.com/img/123.jpg"; // share_img        
wxdata.wx_share[1] = window.location.href;// share_link      url  ,      ,     
wxdata.wx_share[2] = "this is share_desc";// share_desc
wxdata.wx_share[3] = "this is share_title";// share_title
//  --------  5    ---------- 
설명:
4.1 공유 절차:
사용자 가 타임스탬프,무 작위 문자열 을 만 들 고 현재 공유 해 야 할 페이지 의 url 세 변 수 를 만 든 다음 에 자신의 appid 와 APPSicret 를 요청 매개 변수 로 access 를 가 져 옵 니 다.token,accesstoken 획득 jsapiticket,  그리고 획득 할 jsapiticket,그리고 자신 이 만 든 세 개의 변 수 를 서명 합 니 다.서명 과정 안 은 key 값 ASCII 코드 의 오름차 순 으로 정렬 되 고 구체 적 인 참가 절차 에 주의 하 십시오.
4.2 요청 후 응답 프로그램 에서 문 제 를 처리 할 수 없습니다.
get_access_token()함수 에서 위 챗 을 시작 하여 access 가 져 오기token 의 요청,크로스 필드 문제 가 존재 합 니 다.dataType:"jsonp"를 설정 하면 해결 할 수 없습니다.브 라 우 저 를 통 해 요청 을 확인 한 결과 위 챗 에 해당 하 는 데이터 가 포장 되 어 있 지 않 습 니 다.위 챗 은 이 요청 의 크로스 필드 를 지원 하지 않 을 것 이 라 고 추측 합 니 다.ajax 프로그램 을 통 해 access 를 정상적으로 가 져 올 수 없 기 때 문 입 니 다.token 의 값 이지 만 브 라 우 저 에서 access 를 가 져 올 수 있 습 니 다.token 의 값,이 값 은 7200 s 입 니 다.jsapi 를 얻 기 에 충분 합 니 다.ticket,jsapi 획득ticket 요청 과정 에 같은 문제 가 있 으 므 로 access 획득token 과 jsapitoken 은 서버 백 엔 드 코드 를 사용 해 야 합 니 다.
이 글 은 주로 js 요청 으로 공 유 를 완성 하려 는 효과 가 소개 편 에 속 하기 때문에 서버 측 요청 코드(뿌리 지 마 십시오)를 개발 하지 않 았 습 니 다.서버 편 코드 는 후속 응용 편 을 참조 하 십시오.
그렇다면 어떻게 해 야 프로그램 이 뛰 고 페이지 를 정상적으로 공유 할 수 있 을 까?
wxShare 에서data.js 코드 에서 먼저 wxdata.get 을 시작 합 니 다.access_token();  ② ③ ④ ⑤ 코드,브 라 우 저 에서 가 져 온 accesstoken,② 변수 에 수 동 으로 놓 습 니 다.
access 수 동 완성token 의 할당 후 주석 ①,② ③ 을 열 고 시작 합 니 다.  wxdata.get_jsapi_ticket();    ④ ⑤ 코드
같은 동작 으로 브 라 우 저 에서 jsapi 가 져 오기ticket 값 은 ④ 곳 의 변 수 를 부여 하고 설명 ① ③,② ④ ⑤ 곳 의 코드 를 열 면 wxShare 를 볼 수 있 습 니 다.data.js
5、wxShare_sha1.js
데이터 서명  sha1.js 다운로드
6.이때 페이지 가 정상적으로 실행 되 고 위 챗 공 유 를 완성 할 수 있 습 니 다.
성공 페이지 전시

친구

이로써 원 하 는 검증 효 과 를 완성 하면 서버 에서 코드 를 개발 할 수 있 습 니 다!!!완전 판 위 챗 공유 기대
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기