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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
关于PHP中Session文件过多的问题及session文件保存位置
Mar 17 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
php接口实现拖拽排序功能
Apr 23 PHP
phpinfo无法显示的原因及解决办法
Feb 15 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 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实现获取域名的方法小结
2014/11/05 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Linux下python制作名片示例
2018/07/20 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
基于Django统计博客文章阅读量
2019/10/29 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
普通大学毕业生自荐信
2013/11/04 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
同学聚会通知短信
2015/04/20 职场文书
护士心得体会范文
2016/01/25 职场文书
调解协议书范本
2016/03/21 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
python关于集合的知识案例详解
2021/05/30 Python
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android