今天讲讲利用微信oauth2实现第三方登陆的实现方法.

  先说说前提吧!

  首先你得是服务号,并且是经过认证的.这样微信会给你很多第三方接口的权限,如果是订阅号或者没有认证的服务号那就不用想了!

  一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名

  前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以看到.

<ahref="https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=http://www.xxxxxx.com/action/function/oauth2&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">授权</a>

  再说后台逻辑,首先调用微信接口的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'],25920000);}else{$this->error('授权出错,请重新授权!');}}else{echo "NO CODE";}$this->display();}

SDK代码:微信官方有手册,我就不多讲了,自己研究,很简单的!.

/*** 微信SDK * pan041ymail@gmail.com*/class class_weixin_adv
{var $appid = "";var $appsecret = "";//构造函数,获取Access Tokenpublic 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实现方法相关推荐

  1. 微信小程序授权登录获取用户信息详解

    今天来说一下微信小程序的授权登录获取用户信息,首先我们看微信提供的小程序开发文档: https://blog.csdn.net/qq_41971087/article/details/82466647 ...

  2. Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息

    引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...

  3. 微信小程序开发之——用户登录-获取用户信息(5),意外收获字节跳动内部资料

    {{userInfo.nickName}} {{userInfo.city}} {{userInfo.gender0?"未知":userInfo.gender1?"男&q ...

  4. Android之QQ授权登录获取用户信息

    有时候我们开发的app需要方便用户简单登录,可以让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下如何在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...

  5. 微信小程序授权登录获取用户信息并保存至缓存用于下次登录

    1.获取用户信息 wx.getUserProfile(Object object) 获取用户信息.页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗 ...

  6. java实现微信公众号授权登录获取用户信息(一)

    参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...

  7. asp微信登陆源码,实现asp网站授权微信登录(获取用户信息,微信名头像openid等)

    一个同学的网站想实现asp微信登陆,获取到微信用户资料信息,微信昵称,微信头像,微信openid等信息保存到数据库,我给他了一份asp微信登录授权(获取用户信息)源码,他说不会用,让我帮忙写好入库,并 ...

  8. java对接微信小程序(登录获取用户信息)

    需求说明: 用户通过小程序登录,进入到平台系统,进行各功能操作: 解决方案: 首先通过对接小程序,用户通过小程序登录及授权获取用户信息,后端调用接口获取微信用户信息,进行保存到数据库,然后返回toke ...

  9. php支付宝第三方授权,原生 PHP 实现支付宝 App 第三方登录获取用户信息,_PHP_ 少侠科技...

    详细内容 背景 App 项目要求实现第三方 微信 和 支付宝 登录,微信可以直接在 App 端完成认证拿到用户信息,支付宝则需要后端获取. 流程 1.服务端先拿到 App 端 调用 支付宝 SDK 所 ...

最新文章

  1. linux 恢复win7引导,双系统重装win7后恢复ubuntu引导
  2. 第一次,人类在人工神经网络中发现了“真”神经元
  3. 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤
  4. 3 x 10的python表达式_已知 x = [3, 5, 7],那么表达式 x[10:]的值为_学小易找答案
  5. 项目中用到的Linux命令
  6. python中的super用法详解_Python中super函数用法实例分析
  7. mysql blob 写入表_文件存入MYSql表的blob
  8. Vue.js之使用vue-cli初始化项目
  9. mysql主从搭建教程
  10. webpack的CommonsChunkPlugin分析与优化
  11. 不得不知的高速PCB设计中各类地的处理方法
  12. one class classification
  13. Python数据类型函数
  14. 2353410-06-5,TCO-PEG8-TFP ester单分散交联剂,含有TCO部分和PFP酯
  15. 通过windows自带远程桌面,实现不同局域网的电脑相互访问(默默P2P远程桌面管理工具-直接内网穿透)
  16. 猫和老鼠服务器维修有问题,猫和老鼠常见问题怎么解决_游戏技巧攻略_3DM手游...
  17. linux操作系统下 c语言编程入门
  18. KNN+Dense SIFT+手势识别
  19. 安卓开发本地视频播放器——扫描本地视频文件显示在gridview上,然后点击播放。
  20. 必应API接口node.js版 - 极客玩家大白

热门文章

  1. zemax验证高斯公式_ZEMAX 实验讲义
  2. button点击后变色_汽车改色膜新潮流,2021年流行渐变色
  3. 内部服务器如何提供访问服务
  4. 01背包问题--动规
  5. (计算机组成原理)第一章计算机系统概述-王道重点习题及杂项总结
  6. (王道408考研数据结构)第五章树-第三节1:二叉树遍历(先序、中序和后序)
  7. Linux系统编程11:进程入门之详细阐述进程的一些状态区分僵尸状态和孤儿状态动图演示
  8. event_base_loop
  9. C++设计模式-Factory工厂模式
  10. Java统计每个大写字母的个数