php把微信一键登录,PHP微信第三方实现一键登录及获取用户信息的方法(实例详解)...
这篇文章主要介绍了PHP版微信第三方实现一键登录及获取用户信息的方法,较为详细的分析了微信第三方登陆的相关注意事项与实现技巧,需要的朋友可以参考下
注意,要使用微信在第三方网页登录是需要“服务号”才可以哦,所以必须到官方申请。
一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名
前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以看到.
复制代码 代码如下:
授权
再说后台逻辑,首先调用微信接口的SDK.(后面会有)
include('./Card/Common/class_weixin_adv.php');
之后填入微信官方给的的appid与secret
$weixin=new class_weixin_adv("appid", "secret");
初始化SDK的类,取到code,利用获取到的code在获取出openid 看下面代码注释!
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
$res = $weixin->https_request($url);//调用SDK方法获取到res 从中可以得到openid
$res=(json_decode($res, true));//转换成array 方便调用openid
继续调用SDK方法,获取到用户信息.此时$row已经获得用户信息了 可以var_dump下看看键值方便存入数据库
$row=$weixin->get_user_info($res['openid']);
获取用户信息就大功告成了,但这还不够.我们需要的是无需注册!所以需要利用openid,openid属于唯一凭证,每个用户对不同的公众号都有不同的openid.可以理解成用户账号的感觉.我这里用的是把openid存入cookie的解决方案,类似用户登陆的感觉,一些关键数据验证只需要与数据库中的openid进行对比.其他的一些利用方法可以发挥大家的想象!可以跟我留言交流!
关于之前的a链接的授权,大家也可以判断cookie是否存在openid,从而让未授权用户直接跳转到该地址,省却了用户的一步操作.
下面是完整逻辑代码,大家可以参考下!
public function oauth2(){
include('./Card/Common/class_weixin_adv.php');
$weixin=new class_weixin_adv("appid", "secret");
if (isset($_GET['code'])){
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
$res = $weixin->https_request($url);
$res=(json_decode($res, true));
$row=$weixin->get_user_info($res['openid']);
if ($row['openid']) {
//这里写上逻辑,存入cookie,数据库等操作
cookie('weixin',$row['openid'],25920);
}else{
$this->error('授权出错,请重新授权!');
}
}else{
echo "NO CODE";
}
$this->display();
}
SDK代码:微信官方有手册,我就不多讲了,自己研究,很简单的!
/**
* 微信SDK
* pan041ymail@gmail.com
*/
class class_weixin_adv
{
var $appid = "";
var $appsecret = "";
//构造函数,获取Access Token
public function __construct($appid = NULL, $appsecret = NULL)
{
if($appid){
$this->appid = $appid;
}
if($appsecret){
$this->appsecret = $appsecret;
}
$this->lasttime = 1395049256;
$this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
if (time() > ($this->lasttime + 7200)){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
$res = $this->https_request($url);
$result = json_decode($res, true);
$this->access_token = $result["access_token"];
$this->lasttime = time();
}
}
//获取用户基本信息
public function get_user_info($openid)
{
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
$res = $this->https_request($url);
return json_decode($res, true);
}
//https请求
public function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
}
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
php把微信一键登录,PHP微信第三方实现一键登录及获取用户信息的方法(实例详解)...相关推荐
- 微信小程序云开发增删改查、按条件查询、排序方法实例详解。
前言 身为一个后端程序员却一直对微信小程序云开发很感兴趣,自己也用云开发写了三个开源项目了,主要是不需要配置服务器,减少服务器的花费,钱省下来用来买猪肘子啃不香嘛,不过云开发的数据库是nosql类型, ...
- 微信小程序 获取用户信息 官网例程 详解
//index.js //index.js //获取应用实例 const app = getApp()Page({data: {motto: 'diligent is the short cut',/ ...
- 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...
- 公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...
这篇文章主要介绍了微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解的相关资料,需要的朋友可以参考下 微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读&qu ...
- 微信小程序Ⅴ [获取登录用户信息,重点openID(详解)]
♩ 背景 其实这篇文章几个月前就写完了,但是这段时间,微信小程序官方文档有了更新,同事在我自己的实际操作过程中,发现之前写的过于繁杂,所以现在进行简化梳理,欢迎指摘. 语言框架:ThinkPHP3.2 ...
- 从微信服务器获取用户信息,微信小程序Ⅴ [获取登陆用户信息,重点openID(详解)]...
♩ 背景 其实这篇文章几个月前就写完了,可是这段时间,微信小程序官方文档有了更新,同事在我本身的实际操做过程当中,发现以前写的过于繁杂,因此如今进行简化梳理,欢迎指摘. 语言框架:ThinkPHP3. ...
- 微信小程序php返回数组,微信小程序 数组(增,删,改,查)等操作实例详解...
微信小程序 数组(增,删,改,查)等操作 最近在做一个小程序的demo.由于不向后台请求数据,所以就涉及到对本地数据的操作,也遇到了一些坑,本文就以数组的增删改查为例,给新手分享一些经验. 首先这是原 ...
- java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...
微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...
- 微信小程序获取用户信息的方法
1.获取用户基本信息(不包括openid) 使用button按钮即可获取,type="getUserInfo".可获取用户昵称,头像,城市,国家,性别,语言,省. 不需要请求后台接 ...
最新文章
- 操作系统原理第八章:内存管理
- friend keyword 对于模板 并不只不过友元!!!
- Qt在Windows下的三种编程环境搭建
- 关于知识图谱,各路大神最近都在读哪些论文?
- 程序员面试100题之三:不用+、-、×、÷数字运算符做加法
- 人工机器:jetbot小车密码
- 创建主机地址 (A) DNS 记录
- Bailian2684 POJ NOI0105-34 求阶乘的和【迭代】
- Linux配置Selenium+Chrome+Java实现自动化测试
- 2021-2027全球与中国全自动探针台市场现状及未来发展趋势
- 个人微信api接口调用代码
- 修改mysql的authen_MySQL数据库出现Authentication plugin怎么办
- 如何将多个文件的简体中文名快速翻译成繁体中文
- 神奇的Perl-哈希与数组(4)
- qt:qt5.12警告消除大法之 warning: zero as null pointer constant
- 常见网络故障及其解决办法
- 如何判断一个对象是否属于某个类
- 天梯L1-015 跟奥巴马一起画方块 (15 分)(Java)
- 2015 Syrian Private Universities Collegiate Programming Contest 题解
- 用Python群发邮件
热门文章
- Fusion360学习记录:灯泡
- Android之Shader完全理解指南
- Java 添加音频到ppt_Java 添加 、读取以及删除PPT幻灯片中的视频、音频文件
- http(请求方法,状态码,Cookie与Session)
- LV.11 嵌入式系统驱动初级
- css页眉标签,css与页眉,页脚和多栏布局scrled
- 锐龙1700安装服务器系统,装机教程:AMD锐龙R7-1700X+GTX1050装机实录
- [渝粤教育] 西南科技大学 机械制造基础 在线考试复习资料
- 这样写代码真快——idea自动补全总结
- MOT和MTMC指标总结及详细计算方法