1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP微信第三方实现一键登录及获取用户信息办法(实例详解)

PHP微信第三方实现一键登录及获取用户信息办法(实例详解)

时间:2022-02-13 03:19:11

相关推荐

PHP微信第三方实现一键登录及获取用户信息办法(实例详解)

后端开发|php教程

第三方,php,获取

后端开发-php教程注意,要使用微信在第三方网页登录是需要“服务号”才可以哦,所以必须到官方申请。

java项目开发源码网站,vscode折叠后无法展开,ubuntu配置运行,tomcat发布服务方法,淘宝爬虫账号,php.ini 验证码,清远seo网络营销专员,简洁企业网站,帝国cms 自定义模板lzw

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

qq红包裂变源码,vscode使用远程终端,ubuntu不用域名,tomcat密码存在哪,sqlite3数据库同步,人鱼陷落中爬虫和多米诺是好是坏,php 非法字符过滤,广东seo推广推荐厂家,问卷网站源代码,html网页模板使用教程lzw

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

ae免费源码,vscode编译bat,ubuntu forxp,jobss和tomcat,sqlite多用户设置,iteminfo 插件,前端框架应用专周实训,第三方爬虫,php 权限不够,苏州seo外包平台,如何制作营销网站模板下载,手机网页版摇一摇,xp模板商店lzw

复制代码 代码如下:

授权

再说后台逻辑,首先调用微信接口的SDK.(后面会有)

include(./Card/Common/class_weixin_adv.php);

之后填入微信官方给的的appid与secret

$weixin=new class_weixin_adv("appid", "secret");

初始化SDK的类,取到code,利用获取到的code在获取出openid 看下面代码注释!

$url="https://api./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./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代码:微信官方有手册,我就不多讲了,自己研究,很简单的!

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./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./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; }}

总结:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。