重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

还是代码好用,几步就能判断用户是否已关注公众号

时间:2020-09-11 02:30:05 作者:重庆seo小潘 来源:
现在的活动,很多都引导用户关注公众号,才能参与活动,如何判断用户是否已关注公众号,其实很简单,照着本文章,你就不会再犯愁了,本文的php代码很详细的解说了。一、微信公众平台配置1. 获取appid, appsecret,添加白名单登录微信公众平台,进入基本配置。

现在的活动,很多都引导用户关注公众号,才能参与活动,如何判断用户是否已关注公众号,其实很简单,照着本文章,你就不会再犯愁了,本文的php代码很详细的解说了。一、微信公众平台配置1. 获取appid, appsecret,添加白名单登录微信公众平台,进入基本配置。开发中需要用到两个参数,appId和appSecret(appSecret只展示一次,需保存下来,否则需要重置获取)。获取access_token时需要添加IP白名单。还是代码好用,几步就能判断用户是否已关注公众号

点击查看

还是代码好用,几步就能判断用户是否已关注公众号点击修改还是代码好用,几步就能判断用户是否已关注公众号2. 添加网页授权进入公众号设置=》功能设置=》网页授权域名还是代码好用,几步就能判断用户是否已关注公众号点击设置,input框中输入授权回调页的域名参考第1点(只能填写一个),下载第3点中的txt文档,上传至服务器的根目录。还是代码好用,几步就能判断用户是否已关注公众号二、php后端实现1. 获取全局token此token有效期为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获取到的全局tokenexpires_in凭证有效时间,单位:秒错误返回结果:{"errcode": 40013, "errmsg": "invalid appid"}返回结果参数说明:返回码说明-1系统繁忙,此时请开发者稍候再试0请求成功40001AppSecret错误或者AppSecret不属于这个公众号,请开发者确认AppSecret的正确性40002请确保grant_type字段值为client_credential40164调用接口的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域名与后台配置不一致"}返回结果参数说明:返回码说明10003redirect_uri域名与后台配置不一致10004此公众号被封禁10005此公众号并没有这些scope的权限10006必须关注此测试号10009操作太频繁了,请稍后重试10010scope不能为空10011redirect_uri不能为空10012appid不能为空10013state不能为空10015公众号未授权第三方平台,请检查授权状态10016不支持微信开放平台的Appid,请使用公众号Appid通过getCode获取到的code换取网页授权的access_token和openidpublic 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_inaccess_token接口调用凭证超时时间,单位(秒)refresh_token用户刷新access_tokenopenid用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenIDscope用户授权的作用域,使用逗号(,)分隔错误返回结果:{"errcode":40029, "errmsg":"invalid code"}3. 获取用户信息使用第2步中获取的openId和第1步中获取的token去获取用户信息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_CNheadimgurl用户头像,最后一个数值代表正方形头像大小(有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"}三、使用判断是否关注过,此处为入口: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时表示已关注公众号,否则未关注。

相关推荐:

微信公众号开发 微信公众号判断用户是否已关注php代码解析

PHP判断字符类型 php判断用户是否关注微信公众号

视频:公众号的关注与取消操作-0基础微信开发入门以上就是还是代码好用,几步就能判断用户是否已关注公众号的详细内容,更多请关注小潘博客其它相关文章!