网页授权——扫二维码获取openid
1. 生成二维码:
生成二维码比较简单的方法是直接使用phpqrcode程序包(可在网上下载得到)。
若想获得ThinkPHP支持,需将程序包放在ThinkPHP/Extend/Vendor目录下,让后在程序中引用,代码如下:
vendor("phpqrcode.phpqrcode");
//要生成二维码的数据
$text="扫码后要跳转的页面的url";
//纠错级别, 纠错级别越高,生成图片会越大 //L水平 7%的字码可被修正 //M水平 15%的字码可被修正 //Q水平 25%的字码可被修正 //H水平 30%的字码可被修正
$level = "L";
//图片每个黑点的像素。 $size = "10"; //生成图片 第二个参数:是否保存成文件 如需要保存文件,第二个参数改为文件名即可,如:qrcode.png QRcode::png($text,false,$level,$size);
2. 网页授权:
要获取用户的openid,需要进行网页授权。
首先要到公众平台官网的开发者中心页配置授权回调域名。
将二维码url设置为:
appid=公众appid&
redirect_uri=扫码后要跳转的页面url& response_type=code& scope=snsapi_base& state=1#wechat_redirect";
注意:有时候$text内部换行会导致一个错误,就是用户扫码的时候会出现“AppID参数错误”,还有一个问题就是安卓手机扫描页面跳转正常,但是用苹果手机扫描的时候还是会出现“AppID参数错误”,所以应该将$text表示如下:
这样就不会出错了,而且支持安卓手机和苹果手机正常扫码。
这样用户扫二维码后就会跳转到指定的url,并且传递了参数过来。然后就可以在跳转的页面中获取code,换取access_token,由于获取access_token的同时也获取到了openid,所以如果只需获取用户id,到这一步就已经实现了,代码如下:
$res=file_get_contents($get_token_url); $json_obj = json_decode($res,true); $openid = $json_obj[openid];
$openid即为扫码用户的openid。
1. 生成二维码: 生成二维码比较简单的方法是直接使用phpqrcode程序包(可在网上下载得到)。 若想获得ThinkPHP支持,需将程序包放在ThinkPHP/Extend/Vendor目录下,让后在程序中引用,代码如下: vendor("phpqrcode.phpqrcode"); //要生成二维码的数据 $text="扫码后要跳转的页面的url"; //纠错级别, 纠错级别越高,生成图片会越大 //L水平 7%的字码可被修正 //M水平 15%的字码可被修正 //Q水平 25%的字码可被修正 //H水平 30%的字码可被修正 $level = "L"; //图片每个黑点的像素。 $size = "10"; //生成图片 第二个参数:是否保存成文件 如需要保存文件,第二个参数改为文件名即可,如:qrcode.png QRcode::png($text,false,$level,$size); 2. 网页授权: 要获取用户的openid,需要进行网页授权。 首先要到公众平台官网的开发者中心页配置授权回调域名。 将二维码url设置为: appid=公众appid& redirect_uri=扫码后要跳转的页面url& response_type=code& scope=snsapi_base& state=1#wechat_redirect"; 注意:有时候$text内部换行会导致一个错误,就是用户扫码的时候会出现“AppID参数错误”,还有一个问题就是安卓手机扫描页面跳转正常,但是用苹果手机扫描的时候还是会出现“AppID参数错误”,所以应该将$text表示如下: 这样就不会出错了,而且支持安卓手机和苹果手机正常扫码。 这样用户扫二维码后就会跳转到指定的url,并且传递了参数过来。然后就可以在跳转的页面中获取code,换取access_token,由于获取access_token的同时也获取到了openid,所以如果只需获取用户id,到这一步就已经实现了,代码如下: $res=file_get_contents($get_token_url); $json_obj = json_decode($res,true); $openid = $json_obj[openid]; $openid即为扫码用户的openid。