微信公众平台oauth2.0 php,微信公众平台oauth2.0网页授权

本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等)。如大转盘等游戏记录哪个微信用户获得什么奖品、H5等小游戏需要把分数与对应用户捆绑在一起等网页应用。

微信公众平台oauth2.0网页授权能干什么

它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务。

说明与注意

1、网页授权分为两种,一种为只获取openid,一种为获取用户全部信息。

2、你的公众号必须认证的服务号。否则没有此接口权限。

3、你要配置好回调域名:即用户点击网址获取用户信息后打开哪个域名。

4、如有下图错误请检查是否配置好回调域名或者公众号是否认证(我之前一直测试提示如下图出错,仔细查找错误才发现没配置回调域名)

100966519_1.jpg

怎样配置回调域名

1、进入https://mp.weixin.qq.com,点击最下面的”接口权限“菜单(如下图)

100966519_2.jpg

2、找到‘网页授权用户基本信息’,如下图

100966519_3.png

3、点击修改,填写域名。如:我的回调网址为wangwenxiao.com/oauth.php 则填写wangwenxiao.com。配置回调域名完成。不管获取openid还是用户所有信息都需要首先配置回调域名

100966519_4.jpg

微信公众平台网页授权大体流程

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

配置完成后访问上面的网址你将获得如下结果(在微信软件内访问)

访问网址后会提示用户授权

100966519_5.jpg

点击确认登录后出现用户相关信息。如下面是我的微信号信息

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小时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值