本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等)。如大转盘等游戏记录哪个微信用户获得什么奖品、H5等小游戏需要把分数与对应用户捆绑在一起等网页应用。
微信公众平台oauth2.0网页授权能干什么
它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务。
说明与注意
1、网页授权分为两种,一种为只获取openid,一种为获取用户全部信息。
2、你的公众号必须认证的服务号。否则没有此接口权限。
3、你要配置好回调域名:即用户点击网址获取用户信息后打开哪个域名。
4、如有下图错误请检查是否配置好回调域名或者公众号是否认证(我之前一直测试提示如下图出错,仔细查找错误才发现没配置回调域名)
怎样配置回调域名
1、进入https://mp.weixin.qq.com,点击最下面的”接口权限“菜单(如下图)
2、找到‘网页授权用户基本信息’,如下图
3、点击修改,填写域名。如:我的回调网址为wangwenxiao.com/oauth.php 则填写wangwenxiao.com。配置回调域名完成。不管获取openid还是用户所有信息都需要首先配置回调域名
微信公众平台网页授权大体流程
1、获取openid流程。
(1)、用户点击一个带有相关配置的微信服务器url(相关配置包括只获取openid还是所有信息,要回调的网址)
(2)、微信服务器读取配置并且带着code代码(下面获取信息要用)跳转到配置的回调网址。
(3)、回调的网址要利用code代码访问微信服务器的相关接口。就可以获取json信息,包括用户的opendi和access_token(此方法access_token与以前说的调用的access_token不同)。
2、获取用户详细信息流程。
(1)、用户点击一个带有相关配置的微信服务器url(相关配置包括只获取openid还是所有信息,要回调的网址)
(2)、微信服务器读取配置并且带着code代码(下面获取信息要用)跳转到配置的回调网址。
(3)、回调的网址要利用code代码访问微信服务器的相关接口。就可以获取json信息,包括用户的opendi和access_token。
(4)、用第三部获取的access_token访问微信服务器相关接口,即可得到用户详细信息
网页中怎样获取用户openid
1、https://mp.weixin.qq.com中配置回调域名(文章开头有流程)
2、新建oauth.php,把下面的代码复制到里面。把5-6行换成自己公众号的appid与appsecret。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<?php
//获取微信access_token
function getaccess_token(){
$code =$_GET['code'];
$appid ='自己的appid';
$appsecret ='自己的appsecret';
$url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
getaccess_token();
3、配置用户要访问的网页
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
加粗字体替换说明
appid
替换成自己公众号的appid
redirect_uri
替换成自己的回调网址。网址需要URL转码。如:我的回调网址为http://wangwenxiao.com/oauth.php则替换为http%3A%2F%2Fwangwenxiao.com%2Foauth.php
scope
替换为snsapi_base 则只可以获取openid。替换为snsapi_userinfo 则可以获取用户微信号全部信息
我的配置如下https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx999ec5d7791cc415&redirect_uri=http%3A%2F%2Fwangwenxiao.com%2Foauth.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
配置完成后访问上面的网址你将获得如下结果,下面的json中含有你需要的openid(在微信软件内访问)
1{"access_token":"z2VwScv1lQfNi4zgZODN2fLqOKMxNUoobJaAbYug5xgmfuFIFo-65cY0nt0DgaFoWtG3SrX1Gd8XqhAssZqD4fTBgf9QR8XN8NI7vXG3AFY","expires_in":7200,"refresh_token":"wjKHN4HMHJH1Ve5c2Efr1YjP43i2A50wiKSQMdLoXueOap1MyIDAvAnpcqLi7pzjMGmcYzWGaB4RXj7bHLWm806EgnYDJy-eG91wFhNTaKc","openid":"oC8xks4COCfqox1-dXTCsZF_1vIo","scope":"snsapi_base"}
代码详细说明
(1)、相关配置的微信服务器url
(2)、用户访问上面配置的url后,微信服务器get方式(带着code代码)跳转到redirect_uri(配置的回调网址。我的是wangwenxiao.com/oauth.php)。
(3)、第4行获取code代码。第7行把code代码拼接起来,通过curl方式(9-13行,curl前面的文章有介绍)获取json信息,包括用户的opendi和access_token。即可获取到用户openid
网页中怎样获取用户详细信息
1、https://mp.weixin.qq.com中配置回调域名(文章开头有流程)
2、新建oauth.php,把下面的代码复制到里面。把5-6行换成自己公众号的appid与appsecret。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31<?php
//获取微信access_token
function getaccess_token(){
$code =$_GET['code'];
$appid ='自己的appid';
$appsecret ='自己的appsecret';
$url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
$data = curl_exec($ch);
curl_close($ch);
$data = json_decode($data,true);
return $data;
}
//获取用户详细信息
function getinfo(){
$data = getaccess_token();
$access_token =$data['access_token'];
$openid =$data['openid'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
getinfo();
3、配置用户要访问的页面。只需要吧“怎样获取用户openid”教程第3步中的scope换成snsapi_userinfo即可
我的配置如下 https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxeb7dcab7a80c9749&redirect_uri=http%3A%2F%2Fwangwenxiao.com%2Foauth.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
配置完成后访问上面的网址你将获得如下结果(在微信软件内访问)
访问网址后会提示用户授权
点击确认登录后出现用户相关信息。如下面是我的微信号信息
1{"openid":"oC8xks4COCfqox1-dXTCsZF_1vIo","nickname":"骁龙","sex":1,"language":"zh_CN","city":"烟台","province":"山东","country":"中国","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/rXdKf2uKib8f4dPM1COiabMNgsHppSaN07EE6ehGLqiccQSdOcdHJGBOZIIXicqFmQSzemia9IRc9ZgW36SF7PerJGfJw0CEjXtIn\/0","privilege":[]}
获取的json数据相关说明
openid
微信用户唯一标识
nickname
用户昵称
sex
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province
用户个人资料填写的省份
city
普通用户个人资料填写的城市
country
国家,如中国为CN
headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
privilege
用户特权信息,json 数组
代码详细说明
(1)、相关配置的微信服务器url
(2)、用户访问上面配置的url后,微信服务器get方式(带着code代码)跳转到redirect_uri(配置的回调网址。我的是wangwenxiao.com/oauth.php)。
(3)、第4行获取code代码。第7行把code代码拼接起来,通过curl方式(9-13行,curl前面的文章有介绍)获取json信息,包括用户的opendi和access_token。
(4)、19-20行代码获取上面的access_token与要查询的openid,拼接在22行的微信相关接口上。23-28用curl函数访问上面拼接的代码,并获取到信息。
本章结束语
oauth2.0授权是个挺绕的东西,大家认真多操作几遍就会明白,不明白的欢迎留言
本文写作用时4小时