이 글의 예에서는 메뉴를 클릭하여 마이크로사이트를 열고 로그인할 수 있는 WeChat 공개 계정을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
일반적으로 메뉴를 클릭하여 마이크로사이트를 열고 로그인하여 WeChat 공개 계정을 구현하는 단계는 비교적 복잡하지만, 많은 마이크로사이트가 사용되어 이 기사에 요약되어 있으며 몇 가지 이점을 얻을 수 있다고 생각합니다. 모두를 위한 참고 가치.
요즘 대부분의 마이크로사이트는 사용자의 WeChat openid를 통해 자동 로그인을 구현합니다. 이전 개발에서는 사용자가 메뉴를 클릭하면 공식 계정에서 이미지와 텍스트를 반환했습니다. 사용자가 이 이미지와 텍스트를 클릭해야만 마이크로사이트에 자동으로 로그인할 수 있었습니다. 그러나 고급 인터페이스가 있는 경우 메뉴를 클릭하고 웹페이지를 열어 openid를 얻고 자동 로그인을 실현할 수 있습니다.
여기서 언급한 것처럼 고급 인터페이스(서비스 계정, 기업 계정) 권한이 있어야 하며 개발자 모드를 켜야 합니다.
WeChat 공개 플랫폼 배경의 "개발자 센터"에서 "고급 인터페이스" 아래에 "OAuth2.0 웹 인증"을 찾으세요. 클릭하면 콜백을 입력할 수 있는 대화 상자가 나타납니다. 주소가 뜹니다. 승인 방법에 대한 자세한 내용을 알아보려면 여기를 클릭하세요. 고급 인터페이스 권한을 얻은 후에만 이 장소의 "수정"이 나타날 수 있습니다.
여기에 입력한 도메인 이름은 URL이 아닌 도메인 이름이므로 설명이 매우 명확합니다. "인증 콜백 도메인 이름 구성 사양은 전체 도메인 이름입니다." 즉, www가 있는 도메인 이름과 www가 없는 도메인 이름을 의미합니다. 두 개의 서로 다른 도메인 이름입니다. 따라서 아래 그림과 같이 도메인 이름을 입력해야 합니다.
생성 메뉴는 마이크로사이트의 백엔드를 통해 생성할 수 있습니다. 개발자 모드가 켜져 있지 않으면 WeChat 공개 플랫폼의 백엔드를 통해서도 생성할 수 있습니다.
메뉴는 보기 모드인 클릭하여 열기 링크 모드를 사용합니다. 개발자 모드를 사용하는 경우 다음 코드를 WeChat에 제출하여 공개 계정 메뉴(개발자 문서)를 생성할 수 있습니다.
사용
APPID를 받을 수 있는 위치는 위의 콜백 주소를 입력한 '개발자 센터'입니다. 다음으로 PHP를 사용하여 메뉴 제출을 구현합니다.
함수 컬_정보($appid,$secret) {
$ch = 컬_초기화();
컬_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret);
컬_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
컬_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
컬_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
cur_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (호환; MSIE 5.01; Windows NT 5.0)');
컬_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
컬_setopt($ch, CURLOPT_AUTOREFERER, 1);
// 컬_setopt($ch, CURLOPT_POSTFIELDS, $data);
컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = 컬_exec($ch);
if (curl_errno($ch)) {
echo 'Errno'.curl_error($ch);
}
컬_닫기($ch);
$arr= json_decode($tmpInfo,true);
$arr;
반환
}
함수 컬_메뉴($ACCESS_TOKEN,$data) {
$ch = 컬_초기화();
cur_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$ACCESS_TOKEN);
컬_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
컬_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
컬_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
cur_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (호환; MSIE 5.01; Windows NT 5.0)');
컬_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
컬_setopt($ch, CURLOPT_AUTOREFERER, 1);
컬_setopt($ch, CURLOPT_POSTFIELDS, $data);
컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = 컬_exec($ch);
if (curl_errno($ch)) {
echo 'Errno'.curl_error($ch);
}
컬_닫기($ch);
$arr= json_decode($tmpInfo,true);
$arr;
반환
}
함수 creat_menu() {
$ACCESS_LIST=curl_info(APP_ID,APP_SCR);//더 보기 🎜>
if($ACCESS_LIST['access_token']!='') {
$access_token = $ACCESS_LIST['access_token'];//获取到ACCESS_TOKEN
$data = '상면대형1拷贝黏贴지금여기';
$msg = 컬_메뉴($access_token,preg_replace("#u([0-9a-f] )#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '1' ))", $data));
if($msg['errmsg']=='확인') {
die('创建自定义菜单成功!');
}
그렇지 않으면 {
die('创建自定义菜单失败!');
}
}
그렇지 않으면 {
die('创建失败,微信AppId或微信AppSecret填写错误');
}
}
create_menu();
?>
코드 2 PHP를 사용하여 WeChat 공개 계정 메뉴 생성
코드 2는 실제로 약간 중복되어 핵심 부분이 빨간색으로 강조 표시됩니다. 이렇게 하면 WeChat 공식 계정에 생성된 "마이크로사이트 로그인" 메뉴가 곧 표시됩니다. 이 메뉴를 클릭하면 마이크로사이트에 로그인할 수 있습니다.
PHP가 필요하지 않은 경우 WeChat 공개 플랫폼의 백그라운드에서 메뉴 사용자 정의에 직접 링크를 작성할 수 있습니다.
위 사진의 이곳에서 링크를 열어 메뉴를 생성할 수 있는 곳을 선택하세요. 좋습니다. 이제 위의 링크를 입력하세요.
https://open.weixin.qq.com/connect/oauth2/authorize?appid={WeChat 공개 플랫폼 백그라운드에서 이 APPID 가져오기}&redirect_uri={입력한 콜백 도메인 이름 아래의 주소}&response_type= code&scope=snsapi_base&state =1#wechat_redirect
메뉴만 만들어 보세요.
물론 이 링크를 자신의 WeChat 관리 배경에 추가해야 할 수도 있습니다.
3. 콜백 페이지에서 openid를 가져옵니다
주의깊게 보면 위의 링크 주소에scope=snsapi_userinfo 대신 매개변수scope=snsapi_base가 포함되어 있다는 것을 눈치채셨을 것입니다. 전자를 사용하면 사용자가 인증 버튼을 클릭하고 콜백 페이지로 바로 이동할 필요가 없기 때문입니다. , 후자는 승인 버튼을 클릭해야 하지만 승인 버튼을 클릭하면 장점이 있습니다. 첫째, 공식 계정을 팔로우하지 않고도 승인할 수 있습니다. 둘째, 승인 후에는 사용자에 대한 닉네임, 성별, 정보 등을 얻을 수 있습니다. 그리고 위치. 하지만 우리는 로그인에 openid를 사용하고 있으므로 전자를 선택하면 됩니다.
메뉴를 클릭한 후 WeChat 승인 처리 후 제출한 콜백 주소로 이동합니다. (콜백 주소는 xxx/?callback=from_weixin과 같은 매개변수를 사용하지 않는 것이 가장 좋다는 점을 여기서 기억해야 합니다. 왜냐하면 WeChat은 콜백 주소에도 매개변수를 가져와야 하며 이 매개변수가 필요합니다.) WeChat은 다음 URL로 이동합니다:
콜백 주소/?code=CODE&state=1
위 코드는 $_GET['code']를 통해 CODE 값을 얻을 수 있으며, 이 CODE 값과 appid를 이용하여 openid, access_token을 얻을 수 있습니다.
다음으로 PHP를 사용하여 다음을 구현합니다.
if($_GET['code']) {
$code = $_GET['코드'];
$data = get_by_curl('https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSRC&code='.$code.'&grant_type=authorization_code');
$data = json_decode($data);
$openid = $data->openid;
$access_token = $data->access_token;
}
함수 get_by_curl($url,$post = false){
$ch = 컬_init();
컬_setopt($ch,CURLOPT_URL,$url);
컬_setopt($ch, CURLOPT_HEADER, 0);
컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
If($포스트){
컬_setopt($ch, CURLOPT_POST, 1);
컬_setopt($ch, CURLOPT_POSTFIELDS,$post);
}
$result = 컬_exec($ch);
컬_닫기($ch);
$결과 반환;
}
이러한 방식으로 openid 및 access_token을 얻을 수 있으며, 이 값을 사용하여 WeChat 공개 플랫폼의 API 인터페이스를 사용하여 기본 사용자 정보를 얻을 수도 있습니다.
이 기사가 PHP 기반 WeChat 공개 계정을 개발하는 모든 사람에게 도움이 되기를 바랍니다.