위 챗 JS - SDK 공유 기능 의 실현
8630 단어 배치 하 다.
위 챗 JS - SDK 는 위 챗 퍼 블 릭 플랫폼 이 웹 개발 자 에 게 제공 하 는 위 챗 내 웹 개발 키 트 다.위 챗 JS - SDK 를 사용 하면 웹 개발 자 들 은 위 챗 을 통 해 사진 찍 기, 그림 선택, 음성, 위치 등 모 바 일 시스템 을 효율적으로 사용 할 수 있 는 능력 과 함께 위 챗 공유, 스 캔, 카드 바우 처, 결제 등 위 챗 특유 의 능력 을 직접 사용 하여 위 챗 사용자 에 게 더욱 양질 의 웹 체험 을 제공 할 수 있다.
JSDK 사용 절차
단계 1: 귀속 도 메 인 이름
위 챗 공식 플랫폼 에 로그 인하 여 '공중 번호 설정' 의 '기능 설정' 에 'JS 인터페이스 보안 도 메 인' 을 작성 합 니 다.개발 자 센터 에서 해당 하 는 인터페이스 권한 을 봅 니 다.
STEP 2: JS 파일 을 도입 하여 JS 인 터 페 이 스 를 호출 해 야 하 는 페이지 에 다음 JS 파일 을 도입 합 니 다. (https 지원)http://res.wx.qq.com/open/js/jweixin-1.4.0.js 만약 에 서비스 안정성 을 계속 향상 시 키 려 면 상기 자원 이 방문 할 수 없 을 때 방문 을 바 꿀 수 있다.http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (https 지원).비고: AMD / CMD 표준 모듈 로 딩 방법 으로 로 딩 절 차 를 지원 합 니 다. 3. config 인터페이스 주입 권한 검증 을 통 해 JS - SDK 를 사용 해 야 하 는 모든 페이지 에 설정 정 보 를 먼저 주입 해 야 합 니 다. 코드 는 다음 과 같 습 니 다.
wx.config({
debug: true, // , api alert , , pc , log , pc 。
appId: '', // ,
timestamp: , // ,
nonceStr: '', // ,
signature: '',// ,
jsApiList: [] // , JS
});
STEP 4: ready 인터페이스 처 리 를 통 해 성공 적 으로 검증
wx.ready(function(){
// config ready , config ,config , , ready 。 , , ready 。
});
STEP 5: error 인터페이스 처리 실패 검증
wx.error(function(res){
// config error , , config debug , res , SPA 。
});
인터페이스 호출 은 모든 인터페이스 가 wx 대상 (jWeixin 대상 도 사용 할 수 있 음) 을 통 해 호출 되 는 것 을 설명 합 니 다. 매개 변 수 는 하나의 대상 입 니 다. 모든 인터페이스 자체 가 전달 해 야 할 매개 변 수 를 제외 하고 다음 과 같은 통용 매개 변수 도 있 습 니 다. 1. success: 인터페이스 호출 이 성공 할 때 실 행 된 리 셋 함수 입 니 다.2. fail: 인터페이스 호출 이 실 패 했 을 때 실 행 된 리 셋 함수.3. complete: 인터페이스 호출 이 완료 되 었 을 때 실 행 된 리 셋 함 수 는 성공 하 든 실패 하 든 실 행 됩 니 다.4. cancel: 사용자 가 취소 할 때의 반전 함 수 를 클릭 하면 일부 사용자 가 취소 한 api 만 사용 할 수 있 습 니 다.5. trigger: Menu 의 단 추 를 감청 할 때 터치 하 는 방법 입 니 다. 이 방법 은 Menu 의 관련 인터페이스 만 지원 합 니 다.
비고: trigger 에서 ajax 비동기 로 이번 공유 내용 을 수정 하 라 고 요청 하지 마 십시오. 클 라 이언 트 공유 작업 은 동기 화 작업 이기 때문에 ajax 를 사용 한 리 턴 은 아직 돌아 오지 않 습 니 다.상기 몇 가지 함 수 는 모두 하나의 매개 변 수 를 가지 고 있 습 니 다. 유형 은 대상 입 니 다. 그 중에서 모든 인터페이스 자체 가 되 돌아 오 는 데 이 터 를 제외 하고 유 니 버 설 속성 errmsg 도 있 습 니 다. 그 값 형식 은 다음 과 같 습 니 다. 호출 성공 시: "xxx: ok" 입 니 다. 그 중에서 xxx 는 호출 된 인터페이스 이름 호출 이 실 패 했 을 때: 그 값 은 구체 적 인 오류 정보 입 니 다.
기초 인터페이스
현재 클 라 이언 트 버 전이 지정 한 JS 인 터 페 이 스 를 지원 하 는 지 판단 합 니 다.
wx.checkJsApi({
jsApiList: ['chooseImage'], // JS , JS 2,
success: function(res) {
// , api true, false
// :{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});
공유 인터페이스
'친구 에 게 공유' 및 'QQ 에 공유' 버튼 의 공유 내용 사용자 정의 (1.4.0)
wx.ready(function () { //
wx.updateAppMessageShareData({
title: '', //
desc: '', //
link: '', // , JS
imgUrl: '', //
success: function () {
//
}
})
});
'친구 권 으로 공유' 및 'QQ 공간 으로 공유' 버튼 의 공유 내용 사용자 정의 (1.4.0)
wx.ready(function () { //
wx.updateTimelineShareData({
title: '', //
link: '', // , JS
imgUrl: '', //
success: function () {
//
}
})
});
JS - SDK 사용 권한 서명 알고리즘
jsapi_ticket (TP 5.0 프레임) jsapiticket 은 위 챗 JS 인 터 페 이 스 를 호출 하 는 데 사용 되 는 임시 어음 이다.정상 적 인 상황 에서 jsapiticket 의 유효기간 은 7200 초, accesstoken 에서 가 져 옵 니 다.jsapi 획득 으로ticket 의 api 호출 횟수 가 매우 제한 되 어 있 으 며, jsapi 를 자주 갱신 합 니 다.ticket 은 api 호출 이 제한 되 고 자신의 업무 에 영향 을 줄 수 있 습 니 다. 개발 자 는 자신의 서비스 전역 에 jsapi 를 캐 시 해 야 합 니 다.ticket 。 1. 아래 문 서 를 참고 하여 access 획득token (유효기간 7200 초, 개발 자 는 자신의 서비스 전역 캐 시 access token)
// access_token
public function getAccessToken()
{
$appid = 'wx849bbe123456789';
$secret = '0c7c285d6xxxxxxxxxxxxxxx';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
if(!Session::get('access_token')) {
$json = $this->https_request($url);
$arr = json_decode($json,true);
$access_token = $arr['access_token'];
Session::set('access_token',$access_token);
} else {
$access_token = Session::get('access_token');
}
return $access_token;
}
이상 함수 https 필요request 함 수 는 다음 과 같 습 니 다.
public function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
2, 첫 번 째 로 받 은 accesstoken http GET 방식 으로 jsapi 획득 요청ticket (유효기간 7200 초, 개발 자 는 자신의 서비스 전역 에 jsapi ticket 을 캐 시 해 야 합 니 다):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
// jsapi_ticket
public function getTicket()
{
$access_token = $this->getAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$access_token&type=jsapi";
if(!Session::get('ticket')) {
$tic = $this->curl_http($url);
$ket = json_decode($tic,true);
Session::set('ticket',$ket['ticket']);
}
$ticket = Session::get('ticket');
return $ticket;
}
curl_http 요청 함수, 다음 과 같 습 니 다:
public function curl_http($url,$data=null){
$ch = curl_init();
//// , PHP.5.6 , , 。
//curl_setopt($ch,CURLOPT_SAFE_UPLOAD,false);
// url ;
curl_setopt($ch,CURLOPT_URL,$url);
// https , ssl
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
// $data post
if(!empty($data)){
// post
curl_setopt($ch,CURLOPT_POST,1);
// post
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
// , ,CURLOPT_RETURNTRANSFER 1, curl_exec , , ( )
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//
$data = curl_exec($ch);
// curl
curl_close($ch);
return $data;
}
다음 JSON 을 성공 적 으로 되 돌려 주 었 습 니 다:
{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}
jsapi 획득ticket 이후 JS - SDK 권한 검증 서명 을 생 성 할 수 있 습 니 다.
서명 알고리즘 서명 생 성 규칙 은 다음 과 같 습 니 다. 서명 에 참여 하 는 필드 는 noncestr (무 작위 문자열), 유효한 jsapi 를 포함 합 니 다.ticket, timestamp (타임스탬프), url (현재 웹 페이지 의 URL, \ # 및 그 뒷부분 은 포함 되 지 않 음).모든 서명 할 매개 변 수 를 필드 이름 의 ASCII 코드 에 따라 작은 것 부터 큰 것 까지 정렬 한 후 URL 키 쌍 의 형식 (즉, key 1 = value 1 & key 2 = value 2...) 을 문자열 string 1 로 연결 합 니 다.여기 서 주의해 야 할 것 은 모든 매개 변수 이름 이 소문 자 입 니 다.string 1 을 sha1 로 암호 화하 고 필드 이름과 필드 값 은 모두 원본 값 을 사용 하 며 URL 전 의 를 하지 않 습 니 다.STEP 1. 모든 서명 할 매개 변 수 를 필드 이름 의 ASCII 코드 에 따라 작은 것 부터 큰 것 까지 정렬 한 후 URL 키 쌍 의 형식 (즉, key 1 = value 1 & key 2 = value 2...) 을 문자열 string 1 로 연결 합 니 다.
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
STEP 2. string 1 에 sha1 서명 을 하고 signature 를 받 습 니 다.
0f9de62fce790f9a083d5c99e95740ceb90c27ed
주의사항 1. 서명 용 noncestr 와 timestamp 는 wx. config 의 nonceStr 와 timestamp 와 같 아야 합 니 다.2. 서명 에 사용 할 url 은 JS 인터페이스 페이지 의 전체 URL 을 호출 해 야 합 니 다.3. 안전 을 고려 하여 개발 자 는 서버 에서 서명 의 논 리 를 실현 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SSM 프레임 워 크 의 pom. xml 템 플 릿텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.