1. 前端(html)

 <button onclick="getcode()">一键微信登录</button><script>function getcode(){location.href="{:url('/getcode')}";}</script>

2. 后端PHP

<?php
namespace app\index\controller;use app\model\Users;
use think\facade\Config;
use think\facade\Session;/*** 登录*/class Login extends Common
{private $appid = '';private $appsecret = '';private $redirect_uri = 'http://域名/get_userinfo';/*** @return void* 初始化参数*/public function  initialize(){parent::initialize();$this->appid = config('weixin.appid');$this->appsecret = config('weixin.appsecret');}/*** 登录页*/public function login() {return view();}/*** 微信登录 获取code*/public function getcode(){$code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri=".urlencode($this->redirect_uri)."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";$this->redirect($code_url);}/***  微信登录 获取openid以及用户信息*/public function get_userinfo(){//获取code$code = $this->getinput('code');//获取access_token openid$return_data = json_decode($this->curl_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code"),true);$access_token = $return_data['access_token'];$openid = $return_data['openid'];//查询是否已绑定$users_id = Users::where('openid',$openid)->value('users_id');if($users_id){//已绑定直接登录 保存sessionSession::set('users_id',$users_id);$this->redirect('/');}else{//获取信息$user_info = json_decode($this->curl_get_contents("https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN"),true);$insert_data = ['openid'=>$user_info['openid'],'users_name'=>$user_info['nickname'],'img_url'=>$user_info['headimgurl']];//新增$insert_status = Users::create($insert_data);if (!$insert_status){$this->error('绑定失败','/login');}//保存sessionSession::set('users_id',$insert_status->id);$this->redirect('/');}}/*** 远程获取*/public function curl_get_contents($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}}

微信登录步骤

1. 根据appid 获取code

2. 根据code 获取 access_token openid

3.检测access_token 是否有效。 无效刷新access_token、

4. 根据access_token openid 拉去用户信息

TP5.1 微信一键登录相关推荐

  1. 前端微信一键登录和微信小程序支付总结

    微信一键登录和微信小程序支付总结 微信一键登录 现在小程序都是微信一键登录,下面是我的使用方法和总结,仅供参考 需要调用微信小程序的api wx.login() 使用wx.login() 调用获取凭证 ...

  2. 使用 apifm 插件进行 Flutter 云开发——微信一键登录/注册

    在你的 App 中集成手机微信一键授权(注册)登录功能,达到快速注册.快速登录功能 按照本教程的操作指引,预计5分钟即可帮你实现并掌握微信登录的实现 用户管理 微信开放平台创建应用 https://o ...

  3. uni-app中使用微信一键登录

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.微信一键登录是什么? 二.使用步骤 1.在onLoad获取用户登录信息code 2.编写页面button按钮 3. ...

  4. 移动端h5页面微信一键登录

    在移动端的 H5 页面中,微信一键登录是一种常见的方式,可以方便地让用户使用已有的微信账号进行登录,并且提高用户的使用效率和体验.具体实现方法如下: 1.在页面中引入微信 JS-SDK,并初始化 ht ...

  5. uniapp微信一键登录微信授权

    前言 现在小程序逐渐成为主流,常用的微信授权登录很重要很常见的一个功能,今天自己总结了一下. 准备工作 1.如果你想自己想试一下这个功能首先你需要有一个开发中的项目并且你在开发成员里面. 2.配置自己 ...

  6. 微信一键登录解密手机号出现javax.crypto.BadPaddingException: pad block corrupted错误

    <button class="weui-btn btn-login" open-type="getPhoneNumber" bindgetphonenum ...

  7. uniapp微信一键登录

    详细步骤: 1. 安装uni-login插件 打开HBuilderX,点击左侧工具栏里的"插件市场",在搜索框中输入"uni-login"进行搜索,找到该插件并 ...

  8. 微信一键登录遇到的坑

    前两天公司业务需要集成微信一键登录功能和手机号一键登录功能,刚好一段时间没熟悉微信开发文档了,趁着这次时间再次实现一下. 首先呢,去微信开放平台注册账号,创建对应项目的移动应用,获取业务接口 微信开放 ...

  9. 公众号微信一键登录 app微信一键登录

    公众号微信一键登录 app微信一键登录 1.公众号微信一键登录 getCode() { // 非静默授权,第一次有弹框this.code = ''var local = location.href;/ ...

最新文章

  1. 智办事协同办公:数字化转型下的高效工作方式
  2. CSS 解决td里面内容太多把表格弄变形的原因,设置 自动换行。
  3. java结丹期(11)----javaweb(jstljsp)
  4. 解决启动flanneld失败的方法
  5. leetcode202. 快乐数
  6. NXP KW38开发杂记(一)MCUXpress 运行进入NMI_Handler
  7. php怎么给接口里的方法传参,PHP接口中方法的参数和实现类方法中的参数可以不一致的问题...
  8. mysql最大述_MySQL优化(1):Mysql简述
  9. Julia: 关于Github上的其它库
  10. 一起写一个Android图片轮播控件
  11. Elasticsearch查询数据总条数1万条限制
  12. 基于Python完成云知声平台的语音合成接口
  13. CC2540F256RHAR
  14. 老哥们 FlexiTimer库怎么用不了呢 ,指点一下小弟
  15. SpringBoot系列之(二):1.使用SpringBoot
  16. 计算机休眠后无法唤醒出现蓝屏,笔记本电脑进入睡眠,唤醒后出现蓝屏怎么回事?...
  17. 贪心背后的故事Codeforces 995B(Suit and Tie)
  18. IOS 后台运行 播放音乐
  19. windows查看进程及杀死进程
  20. 19软考软件设计师_19个免费的设计师在线杂志

热门文章

  1. 如果。我好愛你。我好想你。
  2. 安卓暗黑模式软件_微信安卓版怎么设置黑暗模式 操作方法介绍
  3. 在线一键拼接图片工具HTML源码分享
  4. win10错误代码0x80070005解决方法
  5. 教学质量分析系统 php,教学质量分析系统
  6. Linux中的挂载点
  7. Mysql常用函数之Rank 排名函数
  8. html制作led,一种简易LED屏的制作方法
  9. 如何根除幽门螺杆菌?
  10. 学习笔记(20):第一章: 路由与模板-Web前端技术与框架