thinkPHP3.2 微信登录(微信扫码登录)

2024-09-01 15:48

本文主要是介绍thinkPHP3.2 微信登录(微信扫码登录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

define("APPID", "fff");//你微信定义的appid

define("APPSECRET","ffff");//你微信公众号的appsecret

//微信登录
//第一步:用户同意授权,获取code
public function acceptAction(){

//这个链接是获取code的链接 链接会带上code参数
$REDIRECT_URI = "http://你的域名/Home/Index/getToken";
echo $REDIRECT_URI."<br>";
$REDIRECT_URI = urlencode($REDIRECT_URI);
echo $REDIRECT_URI."<br>";
$scope = "snsapi_login";
echo $scope."<br>";
$state = md5(mktime());
echo $state."<br>";
//https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect
//网站将微信登录二维码内嵌到自己页面中,用户使用微信扫码授权后通过js将code返回给网站。
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=".APPID."&redirect_uri=".$REDIRECT_URI."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";

//如果是微信客户端登录的话,把url换成($url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".APPID."&redirect_uri=".$REDIRECT_URI."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";)这个就可以了
header("location:$url");

}
//用户同意之后就获取code  通过获取code可以获取一切东西了 
public function getTokenAction(){
//获取accse_token
$code = $_GET["code"];
//echo $code;
//echo "<br>";
//用code获取access_yoken
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".APPID."&secret=".APPSECRET."&code=".$code."&grant_type=authorization_code";
//这里可以获取全部的东西  access_token openid scope
$res = $this->https_requestAction($url);
$res  = json_decode($res,true);
$openid = $res["openid"];
//echo "<pre>";
//print_r($res);
//echo $openid;
//echo "<br>";
$access_token = $res["access_token"];
//echo $access_token;
//这里是获取用户信息
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$res = $this->https_requestAction($url);
$res = json_decode($res,true);
//写入session
//print_r($res);

//把用户的信息写入session 以备查用

//查询数据库中是否存在该微信用户
$user=M('users');
$nums=$user->where(array("wxopenid"=>$openid))->count();

$_SESSION['wxopenid']=$res['openid'];
$_SESSION['wxnickname']=$res['nickname'];
$_SESSION['wxhead']=$res['headimgurl'];

//echo $nums;
if($nums>0){
$result=$user->where(array('wxopenid'=>$openid))->find();
    $_SESSION = $result;
$_SESSION['logtype']='wxcontect';//标记用户登录的类型为QQ登录
$_SESSION['bind']='yes';//标记用户是否绑定了手机号
//判断手否手机端访问
if($this->isMobileAction()){
$this->redirect('Web/User/index');
  exit();
}
$this->redirect("/Home/User/userinfo");
}
//直接跳到首页
else{
$_SESSION['logtype']='wxcontect';
$_SESSION['userid']=2;
$_SESSION['bind']='no';
$this->redirect("/Home/Index/index");

}

//$weixn = $res["openid"];
//$nickname = $res["nickname"];
//$_SESSION["weixin"]=$weixin;
//header("location:http://你的域名/Home/Index/index");
}
public function https_requestAction($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;
}

这篇关于thinkPHP3.2 微信登录(微信扫码登录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127369

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

微信小程序uniappvue3版本-控制tabbar某一个的显示与隐藏

1. 首先在pages.json中配置tabbar信息 2. 在代码根目录下添加 tabBar 代码文件 直接把微信小程序文档里面的四个文件复制到自己项目中就可以了   3. 根据自己的需求更改index.js文件 首先我这里需要判断什么时候隐藏某一个元素,需要引入接口 然后在切换tabbar时,改变tabbar当前点击的元素 import getList from '../

微信小程序(一)数据流与数据绑定

一、单向数据流和双向数据流 1、单项数据流:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面 优点:数据跟踪方便,流向单一,追寻问题比较方便【主要体现:微信小程序】。 缺点:就是写起来不太方便,如果修改UI界面数据需要维护对应的model对象 2、双向数据流:值和UI是双向绑定的,大家都知道,只要UI里面的值发生

微信小程序学习网站

小程序--柯神博客 http://www.cnblogs.com/nosqlcoco 案例地址: https://github.com/cocoli/weixin_smallexe/tree/master/weixin_demo/pages/component/uploadfile

分享一个基于uniapp科技馆服务微信小程序 博物馆管理小程序(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 �