微信公众号授权(获取用户信息)
需要的工具:
微信公众号(可以申请,但做开发的,可以申请测试号,申请详细不多说了)
服务器(可以自行购买,我使用的是新浪的sae。)
编辑器(随意,不做推荐)
微信公众号开发文档(地址)
!!!!!完成基本配置后才能进行一下工作,配置信息在这。(稍后补上)
你要完成网页授权,并获取用户信息要完成一下3步骤。
-1-用户授权并获取code
-2-使用code换取access_token
-3-使用access_token获取用户信息
--------------------用户授权并获取code
参数说明
appid=APPID(公众号唯一标识)
redirect_uri=REDIRECT_URI(授权后重定向的回调链接地址)
response_type=code(返回类型,无需更改)
scope=SCOPE(snsapi_base ,不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo 弹出授权页面,可通过openid拿到昵称、性别、所在地。)
state=STATE(重定向后会带上state参数,开发者可以填写任意参数值)
#wechat_redirect(无需更改)
地址实例(虽是测试号,但我还是隐藏部分信息)红色字体需要根据实际更改。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe5809c42e6c00d22&redirect_uri=http://dingcanphp.applinzi.com/getUserInfo.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
返回结果(code的值,不一定是显示在浏览器界面上的,具体看你的redirect_uri中的文件)
061h4k8Z1G7AhY0025bZ1nbh8Z1h4k8Q
-----------------使用code换取access_token
参数说明
appid=APPID(公众号唯一标识)
secret=SECRET(公众号的appsecret)
code=CODE(第一步获取的code参数)
grant_type=authorization_code(无需更改)
地址实例(虽是测试号,但我还是隐藏部分信息)红色字体需要根据实际更改。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxe5809c42e6c00d22&secret=5444ba1b31666f6052e9c703f906368b&code=061h4k8Z1G7AhY0025bZ1nbh8Z1h4k8Q&grant_type=authorization_code
返回结果(json格式数据)
{
"access_token": "e1nYJFpZuehfQH1buzHFZLb7onqs_wT1cudSdy9HRlnaMXFtFpRMNFOA0euK6UxPcItrSNbAQVcXDdthbLJYX0MdH1p7-tkZSKuGqBCxVc0",
"expires_in": 7200,
"refresh_token": "0iVsXn4O1rBCASbO7hx8VNVUVFM1RP2Q4xS0giegd4jlIsJYOjTJNZ0b4Dsh_xcoB02ZZ3bt0WH0a47LvjIEPjWUnESJCZyl6EtY_xYZdVs",
"openid": "o47Fa0mp9SRTf3eiKmqWm69BjG_8",
"scope": "snsapi_userinfo"
}
结果解释
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
scope 用户授权的作用域,使用逗号(,)分隔
-----------------使用access_token获取用户信息
参数说明
access_token=ACCESS_TOKEN(第2步获取的access_token参数,此access_token与基础支持的access_token不同)
openid=OPENID(第2步获取的openid参数)
langlang=zh_CN 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
地址实例(虽是测试号,但我还是隐藏部分信息)红色字体需要根据实际更改。
https://api.weixin.qq.com/sns/userinfo?access_token=e1nYJFpZuehfQH1buzHFZLb7onqs_wT1cudSdy9HRlnaMXFtFpRMNFOA0euK6UxPcItrSNbAQVcXDdthbLJYX0MdH1p7-tkZSKuGqBCxVc0&openid=o47Fa0mp9SRTf3eiKmqWm69BjG_8&lang=zh_CN
返回结果(json格式数据)
{
"openid": "o47Fa0mp9SRTf3eiKmqWm69BjG_8",
"nickname": "齐齐",
"sex": 0,
"language": "zh_CN",
"city": "Shaoxing",
"province": "Zhejiang",
"country": "CN",
"headimgurl": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM6kqfcibzzVc8MDGBch53mIgJjWrbKSwkBnzcsWBOMOGlg/0",
"privilege": []
}
结果解释
openid 用户的唯一标识
nickname 用户昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province 用户个人资料填写的省份
city 普通用户个人资料填写的城市
country 国家,如中国为CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
---------------------------------代码实现
解读完文档,理解实现的步骤、过程,那就开始具体的代码实现。
接触过php,但是没系统性的学习一下,所以代码实现的时候有些困难,如果不懂phpd的可以看这
直接上代码,在需要的地方我以注释的形式说明。
命名为login.php放在服务器根目录。
<?php$appid='wxe5809c42e6c00d2d';$redirect_uri = urlencode ( 'http://dingcanphp.applinzi.com/getUserInfo.php' );//将字符串以 URL 编码。$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";header("Location:".$url);//header() 函数向客户端发送原始的 HTTP 报头。
?>
命名为getUserInfo.php放在服务器根目录。
<?phpheader("content-type:text/html;charset=utf-8");$code = $_GET["code"];//预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。if (isset($_GET['code'])){//判断code是否存在$userinfo = getUserInfo($code);$xinxi = $userinfo['nickname'];//获取nickname对应的值,即用户名print '<h2 style="text-align:center">用户名:'.$xinxi.'</h2>';//打印输出}else{echo "NO CODE";}function getUserInfo($code){$appid = "wxe5809c42e6c00d2d";$appsecret = "506eba1b31666f6052e9c703f906368b";//Get access_token$access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";$access_token_json = https_request($access_token_url);//自定义函数$access_token_array = json_decode($access_token_json,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数//获取access_token$access_token = $access_token_array['access_token'];//获取access_token对应的值//获取openid$openid = $access_token_array['openid'];//获取openid对应的值//Get user info$userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";$userinfo_json = https_request($userinfo_url);$userinfo_array = json_decode($userinfo_json,ture);return $userinfo_array;}function https_request($url)//自定义函数,访问url返回结果{$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$data = curl_exec($curl);if (curl_errno($curl)){return 'ERROR'.curl_error($curl);}curl_close($curl);return $data;}
?>
自定义函数中的curl。
--------------------------网页授权,用户信息的获取体验
两种体验方式。需要完成配置后实现。
微信公众号自动回复中:
//自动回复模式if (strstr($keyword, "文本")){$content = "这是个文本";}else if (strstr($keyword, "登录")){$content = "OAuth2.0网页授权演示\n";$content .= '<a href="http://dingcanphp.applinzi.com/login.php">点击这里体验</a>';$content .="\n".'<a href="https://jq.qq.com/?_wv=1027&k=4BeSCye">技术支持 现代软件工程工作室</a>';}else{$content = date("Y-m-d H:i:s",time())."\n\n".'技术支持 现代软件工程工作室';}
菜单点击访问:
{"button": [{"type":"view","name":"餐厅信息","url":"http://dingcanphp.applinzi.com/index/canting.html"},{"name": "帮助","sub_button": [{"type":"view","name":"天气查询","url":"http://dingcanphp.applinzi.com/index/tianqi.html"},{"type":"view","name":"网页授权","url":"http://dingcanphp.applinzi.com/login.php"}]} ]
}
微信公众号授权(获取用户信息)相关推荐
- vue h5微信公众号授权获取用户信息
vue h5微信公众号授权获取用户信息 1.申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.修改网页授权 ...
- 微信公众号授权获取用户OpenID和UnionId然后发生消息通知
微信公众号授权获取用户OpenID和UnionId然后发生消息通知 1.获取微信公众号code 1.微信公众拿取公众号appid和appSecret 2.网页域名授权,这里的域名拼接上html所在位置 ...
- 【微信公众号】获取用户信息
author:咔咔 wechat:fangkangfk 已经很久没有在写公众号了,今天在回顾一下 首先获取测试账号 然后配置域名 打开文档看看步骤:https://mp.weixin.qq.com/w ...
- 微信公众号开发--获取用户信息中文乱码的解决方案
在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...
- 微信公众号网页获取用户信息
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 效果图 html 代码: <!DOCTYPE html> <html><head ...
- 企业微信接收消息服务器配置php,微信企业号配置及在公众号里获取用户信息
微信企业号配置及在公众号里获取用户信息 1.1.企业公众号里新建应用,回掉模式里自定义回调URL及密钥拿到,创建应答数据 配置成功后显示: 已成功配置企业服务器 URL http://75271.co ...
- 微信小程序授权获取用户信息和手机号码
微信小程序授权获取用户信息和手机号码 1.微信官方文档 登录:https://developers.weixin.qq.com/miniprogram/dev/framework/open-abili ...
- 微信小程序授权 获取用户信息
微信小程序授权 获取用户信息 小程序昵称突然变成了"微信用户",头像也不显示, <!-- 近期很多小伙伴通过该方法获取头像和昵称,代码也没有做改变,突然就变成了下面这样子 - ...
- Java-(二)微信小程序授权获取用户信息和手机号码
第一篇我们已经知道了微信小程序怎么授权登录获取用户信息. openId 和 unionId .下面将高速告诉大家,微信小程序如何授权获取用户信息和手机号码. 微信官方文档:https://develo ...
- 微信公众号授权,获取code获取openId获取用户基本信息
微信开放官方文档 https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 微信测官方测试号 htt ...
最新文章
- python设置环境路径_window10配置python虚拟环境的路径
- 一些很酷的.Net技
- #1049 : 后序遍历(二叉树,DFS)
- canvas学习和滤镜实现
- python爬虫爬微信红包_python 微信红包
- LeetCode 350. Intersection of Two Arrays II
- MTK 驱动(86)---更换CPU后,RPMB无法访问,必须同时更换eMMC
- VC助手使用问题————all instance of the license* are in use .VA will be disabled
- iproute2 对决 net-tools
- Marlin 溫度感應器 數值轉換對應表
- 100-days: nineteen
- Java实现的企业员工考勤管理系统
- FPGA基础入门【16】开发板加速度传感器配置
- 11种绕过CDN查找真实IP方法(查找网站真实IP地址、查找域名真实IP)
- 快解析内网穿透,速度快 不限速 不限流
- 罗技c930e摄像头描述符
- 这是一个全民销售的时代
- php账号管理工具,微信公共账号第三方管理工具开发(一)
- html下拉框的宽度怎么设置,在HTML选择下拉选项中设置下拉元素的宽度
- SQL语句操作练习(一)
热门文章
- 开关电源中肖特基二极管的作用
- python字典多重
- php学籍信息管理系统心得_PHP实现简单的学生信息管理系统(web版)
- Android layer type与WebView白屏
- 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
- dnf跨三无线连接服务器,DNF跨3什么时候开通跨区 DNF新跨区计划来袭
- java如何与RS232进行通信
- 向华为、海尔学习为什么失败?
- 各大主流微服务技术SpringCloud、SpringCloudAlibaba、Dubbo、Motan、MSEC架构选型对比
- 70.青蛙跳台阶(爬楼梯)