这是最近几天在做的一个小 demo,要求是用 php 来实现的,所以我从零开始,先看了一会的 php 基础教程,入门后就用一晚上,两三个小时写出了这个 demo。等有空再整理好代码,封装后分享给大家。今天先来说一下微信网页开发,这一篇只是简单介绍一下网页授权获取用户基本信息的实现方式。
网页授权的实现方式
首先我们从微信公众平台的开发者文档中找到网页开发的网页授权一项,来看一下它的实现方式。我们可以发现网页授权获取用户信息可以简单的分为三步:
用户同意授权,获取 code
通过code换取网页授权 access_token
获取用户信息
需要注意的是此处的 access_token 和 平常微信开发中所用到的是不一样的,此处获取的为网页授权 access_token
另外,网页授权有两种 scope,分别为 snsapi_base 和 snsapi_userinfo 。其中 snsapi_base 为静默授权,不需要用户授权,会自动跳转到回调页面,是用来获取进入页面的用户的 openid 的;而 snsapi_userinfo 需要用户手动授权才能跳转到回调页面,用来获取用户的基本信息。
那么接下来我们开始进行网页授权,首先获取 code,用来获取网页授权 access_token ,这里因为要获取用户基本信息,所以我们选择 scope 的类型为 snsapi_userinfo ,根据开发者文档写出代码如下:
function get_code($APPID) //用户同意授权,获取code
{
//重定向浏览器
header("Location: https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$APPID."&redirect_uri=经过 urlencode 处理后的 redirect_uri &response_type=code&scope=snsapi_userinfo&state=androxue#wechat_redirect");
//确保重定向后,后续代码不会被执行
exit;
}
上面有一点需要注意的是 redirect_uri 即授权后重定向的回调链接地址,需要使用 urlencode 进行处理。
获取到 code 以后,我们就可以利用 code 来获取网页授权的 access_token 了,详情大家看开发者文档,我就不再多做解释了,利用 code 获取网页授权 access_token 的代码如下:
function get_access_token($APPID,$APPSECRET) //通过code换取网页授权access_token
{
$code = $_GET['code'];
$access_token_info = Get("https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$APPID."&secret=".$APPSECRET."&code=".$code."&grant_type=authorization_code");
$access_token = json_decode($access_token_info,true);