这篇文章介绍的内容是关于微信公众号开发完整教程四,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下因为工作的需要,这一两年对微信公众号和小程序,项目制作的比较多微信公众号开发 。所以我才打算写一篇全面的制作教程,当然了,最好的教程是微信工作平台的文档。我这里只是讲述一下我的工作中的制作流程。所有相关文章的源码,我托管在我自己的github上面,欢迎关注:地址点击打开链接。接下来开始我们的教程。这一节我们讲述网页授权的制作:我们这次使用的是微信公众号测试号来完成这个功能。
1.网页授权:微信文档:
设置回调域:
1.1:关于网页授权的两种方式:Snsapi_base方式只能获取用户的openID 属于静默授权用户无感知
Snsapi_userinfo方式能获取用户的基本信息微信公众号开发 ,但是需要用户手动授权
1.2:关于access_token说明:在整个网页授权中使用到的access_token只能在网页授权的流程中使用微信公众号开发 。对于其他的接口使用的access_token需要使用基础接口中获取到的值。
1.3整个网页授权流程:1 第一步:用户同意授权微信公众号开发 ,获取code(需要引导用户打开授权界面)
2 第二步:通过code换取网页授权access_token(用户同意授权微信会请求设置的回调地址)
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
2.代码实现:
2.1修改自定义菜单:跳转地址的函数如下:
2.2第一步实现引导跳转代码如下:
// 引导跳转的方式public function auth($action_name, $controller_name){// var_dump($action_name, $controller_name);$bak = urlencode("ht://);}其中的两个参数分别是:跳转地址的控制器和方法:
public function __construct(Request $request){parent:__construct();$this-accessToken = get_access_token();//获得方法 $action_name =$request-action();//获得控制器 $controller_name = $request-controller();if(!cookie('user')){if($action_name !='getcode'){$this-auth($action_name, $controller_name);}}}在引导方法中微信公众号开发 ,我们会获取到getcode的值:函数如下:其中包含有第二步,第三步,第四步的实现方法:
public function getcode(Request $request){$code = $_GET['code'];if(!$code){echo '微信服务器故障'exit;}// 第二步:通过code换取网页授权中的access_token$url ="hts://api.weixin.qq.com/sns/oauth2/access_token?id="$this-id."secret="$this-secret ."code="$code."grant_type=authorization_code"$result =file_get_contents($url);$result = json_decode($result,true);if(!$result){echo '微信服务器故障'exit;}// 第三步:获取用户的基本信息微信公众号开发 ,此操作仅限scope为snspai_userinfo$url ="hts://api.weixin.qq.com/sns/userinfo?access_token="$result['access_token']."openid=" .$result['openid']."lang=zh_CN"$result =file_get_contents($url);$result = json_decode($result,true);$userInfo = db('user')-where("openid""="$result['openid'])-find();if(!$userInfo){echo '操作数据可以'$data = ['nickname' =$result['nickname'] ,'openid'=$result['openid'],'headimgurl'=$result['headimgurl']];db('user')-insert($data);$userInfo = $result;}// 第四步骤:跳转回跳转地址$bak = $_GET['bak'];cookie('user'$userInfo);header('Location:'$bak);}在实现的过程中,我们会对请求到的用户信息进行存储数据库的操作,当再次进来的时候,会进行判断,是否在数据库中有值:
我是在阿里云上建立好的服务器微信公众号开发 ,获取的数据如下:
网页授权的结果如图:
注意点和关键点:
这就是为什么我上面的测试结果不显示确认提示框的原因,还有就是需要对接口中的各个参数有好的了解微信公众号开发 。各个参数的含义,以及微信的OAuth2.0协议的理解:这里有一篇不错的关于此协议的文章:点击打开链接
其实大家只要认真微信的文档微信公众号开发 ,开发的时候细致认真,基本都可以开发好微信公众号,下一节我们再来讲述关于资源文件的上传的知识点.