찾다
위챗 애플릿위챗 개발코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.

오늘의 많은 활동은 사용자가 활동에 참여하기 위해 공개 계정을 팔로우하도록 안내합니다. 사용자가 공개 계정을 팔로우했는지 판단하는 방법은 실제로 매우 간단합니다. 이 문서의 PHP 코드는 더 이상 걱정할 필요가 없습니다. 기사가 매우 자세하게 설명되어 있습니다.

1. WeChat 공개 플랫폼 구성

1. appid, appsecret 가져오기, 화이트리스트 추가

WeChat 공개 플랫폼에 로그인하고 기본 구성에 들어갑니다. 개발에는 appId와 appSecret이라는 두 개의 매개변수를 사용해야 합니다(appSecret은 한 번만 표시되므로 저장해야 하며, 그렇지 않으면 재설정하여 가져와야 합니다).
access_token을 얻을 때 IP 화이트리스트를 추가해야 합니다.
코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.

보려면 클릭

코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.
수정하려면 클릭
코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.

2. 웹페이지 인증 추가

공식 계정 설정 입력 = "기능 설정 =" 웹페이지 인증 도메인 이름
코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.설정 클릭, 도메인 입력 입력란에 인증 콜백 페이지 이름 1번 항목을 참조(1개만 입력 가능), 3번 항목의 txt 문서를 다운로드하여 서버의 루트 디렉터리에 업로드합니다.
코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.

2. PHP 백엔드 구현

1. 글로벌 토큰 획득

이 토큰은 2시간 동안 유효하며 만료 후 다시 획득해야 합니다.
PS: 프로젝트는 동일한 인터페이스를 사용해야 합니다. 그렇지 않으면 서로 스쳐 지나가기 쉽고 만료가 발생할 수 있습니다.

public static function getToken($appid, $appsecret){
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
    return Curl::callWebServer($url);
}

正确返回结果:
    {
        "access_token": "ACCESS_TOKEN",
        "expires_in": 7200
    }
    返回结果参数说明:
    参数              说明
    access_token      获取到的全局token
    expires_in        凭证有效时间,单位:秒
    
错误返回结果:
    {"errcode": 40013, "errmsg": "invalid appid"}
    返回结果参数说明:
    返回码    说明
    -1       系统繁忙,此时请开发者稍候再试
    0        请求成功
    40001    AppSecret错误或者AppSecret不属于这个公众号,请开发者确认        AppSecret的正确性
    40002    请确保grant_type字段值为client_credential
    40164    调用接口的IP地址不在白名单中,请在接口IP白名单中进行设置。(小程序及小游戏调用不要求IP地址在白名单内。)

2. 사용자와 연결된 공용 계정의 openid를 얻는 방법은 두 단계로 나누어집니다. 먼저 공용 계정에 대한 사용자 인증 코드를 얻은 다음 이 코드를 사용하여 임시 access_token과 openid를 얻습니다.

사용자 인증 코드 받기

public static function getCode($appId, $redirect_uri, $state=1, $scope='snsapi_base', $response_type='code'){
    $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appId.'&redirect_uri='.$redirect_uri.'&response_type='.$response_type.'&scope='.$scope.'&state='.$state.'#wechat_redirect';
    header('Location: '.$url, true, 301);
}

正确返回结果:
    返回code码,并且跳转回调页面$redirect_uri
    
错误返回结果:
    {"errcode": 10003, "errmsg": "redirect_uri域名与后台配置不一致"}
    返回结果参数说明:
    返回码    说明
    10003    redirect_uri域名与后台配置不一致
    10004    此公众号被封禁
    10005    此公众号并没有这些scope的权限
    10006    必须关注此测试号
    10009    操作太频繁了,请稍后重试
    10010    scope不能为空
    10011    redirect_uri不能为空
    10012    appid不能为空
    10013    state不能为空
    10015    公众号未授权第三方平台,请检查授权状态
    10016    不支持微信开放平台的Appid,请使用公众号Appid

getCode를 통해 얻은 코드를 웹페이지에서 승인된 access_token 및 openid로 교환

public static function getAccessToken($code, $appid, $appsecret, $grant_type='authorization_code'){
    $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type='.$grant_type.'';
    return Curl::callWebServer($url);
}
   
正确返回结果:
    { 
        "access_token": "ACCESS_TOKEN",
        "expires_in": 7200,
        "refresh_token": "REFRESH_TOKEN",
        "openid": "OPENID",
        "scope": "SCOPE"
    }
    返回参数说明
    参数            描述
    access_token    网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
    expires_in    access_token接口调用凭证超时时间,单位(秒)
    refresh_token    用户刷新access_token
    openid    用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
    scope    用户授权的作用域,使用逗号(,)分隔
    
错误返回结果:
    {"errcode":40029, "errmsg":"invalid code"}

3. 사용자 정보 얻기

2단계에서 얻은 openId와 1단계에서 얻은 토큰을 사용하여 사용자 정보 얻기

public static function getUserInfo($openId, $token){
    $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$token.'&openid='.$openId.'&lang=zh_CN';
    return Curl::callWebServer($queryUrl, '', 'GET');
}
正确返回结果:
    {
        "subscribe": 1, 
        "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
        "nickname": "Band", 
        "sex": 1, 
        "language": "zh_CN", 
        "city": "广州", 
        "province": "广东", 
        "country": "中国", 
        "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
        "subscribe_time": 1382694957,
        "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
        "remark": "",
        "groupid": 0,
        "tagid_list":[128,2],
        "subscribe_scene": "ADD_SCENE_QR_CODE",
        "qr_scene": 98765,
        "qr_scene_str": ""
    }
    返回参数说明:
        参数            说明
        subscribe       用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
        openid          用户的标识,对当前公众号唯一
        nickname        用户的昵称
        sex             用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
        city            用户所在城市
        country         用户所在国家
        province        用户所在省份
        language        用户的语言,简体中文为zh_CN
        headimgurl      用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
        subscribe_time  用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
        unionid         只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
        remark          公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
        groupid         用户所在的分组ID(兼容旧的用户分组接口)
        tagid_list      用户被打上的标签ID列表
        subscribe_scene 返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENEPROFILE LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他
        qr_scene        二维码扫码场景(开发者自定义)
        qr_scene_str    二维码扫码场景描述(开发者自定义)

错误结果:
    {"errcode":40013,"errmsg":"invalid appid"}

3.

를 사용하여 공개 계정을 팔로우했는지 확인하세요. 입구는 다음과 같습니다.

public function isConcern($appId, $appSecret) {
    $param = ''; // 如果有参数
    $this->getCode($appId, U('callback', 'param='.$param), 1 ,'snsapi_base');
}

승인 후 콜백

public function callback(){
    $isconcern = 0;
    $code = $this->_get('code');
    $param = $this->_get('param');
    $appId = C('appId'); // config中配置
    $appSecret = C('appSecret');
    $accessTokenInfo = $this->getAccessToken($code, $appId, $appSecret);
    $openId = $accessTokenInfo['openid'];
    $accessToken = $accessTokenInfo['access_token'];
    $token = $this->getToken($appId, $appSecret);
    $userInfo = $this->getUserInfo($openId, $token['access_token']);
    if($userInfo['subscribe'] == 1){
        $this->assign('userInfo', $userInfo);
        $isconcern = 1; // 已关注
    } else {
        $isconcern = 0; // 未关注
    }
    $this->assign('openid', $openId);
    $this->display('page');
}

이 때 페이지에서 userInfo 및 isconcern을 얻을 수 있습니다. isconcern이 ​​1이면 공식 계정을 팔로우했다는 의미입니다. 그렇지 않으면 관심을 기울이지 않았습니다.

관련 추천:

WeChat 공개 계정 개발 사용자가 PHP 코드 분석을 따랐는지 확인하기 위한 WeChat 공개 계정

문자 유형을 결정하기 위한 PHP 사용자가 WeChat 공개 계정을 팔로우하고 있는지 확인하기 위한 php

영상: 공개계정 주의 및 취소작업 -0 기본 위챗 개발 소개

위 내용은 코드는 여전히 사용하기 쉽고 몇 단계만 거치면 사용자가 공식 계정을 팔로우했는지 확인할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기