网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
用于引导用户的链接为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
这里面redirect_uri设置需要注意,必须是后台设置的授权域名下,否则会报错,测试账号是在接口列表下网页账号这一栏去设置和修改授权域名,如图:

其他参数根据自己的实际情况设置就行,一般scope设置为snsapi_userinfo(询问用户),设置好在微信里面访问这个连接的时候,正常会弹出询问页面:

如果用户点击确认后就会跳转到你设置的redirect_uri地址,并且在跳转这个地址的时候,微信会附带一个code参数,
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
有了这个就可以去获取网页授权access_token(与基础支持中的access_token不同),在你回调方法里面去请求这个接口:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
例子:
/**
* 获取授权token
* 在回调方法里面调用这个方法来获取授权access_token和用户的openid等重要信息
* @param string $code 通过get_authorize_url获取到的code
*/
public function getOauthAccessToken(){
$code = isset($_GET['code'])?$_GET['code']:'';
$api='https://api.weixin.qq.com/sns/oauth2/access_token?';
if (!$code) return false;
$url=$api."appid={$this->appid}&secret={$this->appSecret}&code={$code}&grant_type=
authorization_code";
$token_data=json_decode($this->curl_post_https($url),true);
$this->oauthAccessToken=$token_data['access_token'];
return $token_data;
}
这个接口会返回授权access_token和用户的openid等重要信息,然后再请求:
http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
这个接口就是返回用户的基本信息了,包括昵称,头像等。有了用户的基本信息就可以开发自己的业务处理了比如将用户数据存入数据库或者跟现有的账号绑定关系等等