php版微信公众平台之微信网页登陆授权示例


Posted in PHP onSeptember 23, 2016

本文实例讲述了php版微信公众平台之微信网页登陆授权。分享给大家供大家参考,具体如下:

微信公众平台实现微信网页登陆授权开发其实是非常的简单了,因为官方的参考程序了,下面小编就看了一站长根据官方参考做的一个网页登陆授权例子,大家可看看.

文件1:index.php

//换成自己的接口信息
$appid = 'XXXXX';
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=127.0.0.1/oauth.php&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect');

参数 是否必须 说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
#wechat_redirect 无论直接打开还是做页面302重定向时候,必须带此参数

文件二:oauth.php,代码如下:

<?php
$code = $_GET['code'];
$state = $_GET['state'];
//换成自己的接口信息
$appid = 'XXXXX';
$appsecret = 'XXXXX';
if (emptyempty($code)) $this->error('授权失败');
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode(file_get_contents($token_url));
if (isset($token->errcode)) {
 echo '<h1>错误:</h1>'.$token->errcode;
 echo '<br/><h2>错误信息:</h2>'.$token->errmsg;
 exit;
}
$access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token;
//转成对象
$access_token = json_decode(file_get_contents($access_token_url));
if (isset($access_token->errcode)) {
 echo '<h1>错误:</h1>'.$access_token->errcode;
 echo '<br/><h2>错误信息:</h2>'.$access_token->errmsg;
 exit;
}
$user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN'; //开源软件:phpfensi.com
//转成对象
$user_info = json_decode(file_get_contents($user_info_url));
if (isset($user_info->errcode)) {
 echo '<h1>错误:</h1>'.$user_info->errcode;
 echo '<br/><h2>错误信息:</h2>'.$user_info->errmsg;
 exit;
}
//打印用户信息
echo '<pre>';
print_r($user_info);
echo '</pre>';
?>

参数 描述
openid 用户的唯一标识
nickname 用户昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province 用户个人资料填写的省份
city 普通用户个人资料填写的城市
country 国家,如中国为CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空.
privilege 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)

到此网页登陆授权开发功能就作完了,如果想要获取用户基本信息我们需要看另一个例子,在官方有说明大家可自行搜索哦.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
基于PHP常用函数的用法详解
May 10 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
PHP静态成员变量
Feb 14 PHP
ThinkPHP框架实现数据增删改
May 07 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
Laravel find in set排序实例
Oct 09 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 #PHP
php利用递归实现删除文件目录的方法
Sep 23 #PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 #PHP
php分页原理 分页代码 分页类制作教程
Sep 23 #PHP
php使用glob函数遍历文件和目录详解
Sep 23 #PHP
php版微信发红包接口用法示例
Sep 23 #PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 #PHP
You might like
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python中为什么要用self探讨
2015/04/14 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
python 实时遍历日志文件
2016/04/12 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
客服文员岗位职责
2013/11/29 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
本科毕业生自荐信
2014/05/26 职场文书
经济类毕业生求职信
2014/06/26 职场文书
个人股份合作协议书
2014/10/24 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers