微信小程序 微信授权登录 微信登录
一、调用接口获取临时登录凭证(code)
wx.login({success(res) {if (res.code) {// res.code => 登录凭证} else {console.log('登录失败!' + res.errMsg)}}
})
二、调用 code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key
本接口应在后端服务器调用
- 请求地址
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
- 请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appid | string | 是 | 小程序appid | |
secret | string | 是 | 小程序appSecret | |
js_code | string | 是 | 登录时获取的code | |
grant_type | string | 是 | 授权类型,此处只需要填写 authorization_code |
- 返回值
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
unionid | string | 用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
- 后台接口代码(PHP)
public function actionWechatLogin(){// 获取传参中的code$code = $this->checkIsGet()->get('code');// 调用微信接口获取openid$openid = $this->getOpenId($code);// 根据openid去数据库中查询用户信息,能查到数据继续下面的操作,未查到 提示未绑定微信登录//重置token// 1. 生成token$authKey = md5(md5(time() . uniqid() . mt_rand(0, 999)));// 2. 生成的token保存到 mysql数据库// 3. 生成的token保存到 redis (键:token的值,value:用户信息)// 返回Output::output(true, '0', '成功', ['openid' => $openid, 'token' => $authKey]);}private function getOpenId($code){// 这里的appid、secret、 grant_type 需要替换成你自己的$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.Yii::$app->params['mini_program']['AppID'] . '&secret='.Yii::$app->params['mini_program']['AppSecret'].'&js_code='.$code.'&grant_type=authorization_code';$ch = curl_init();$options = array(CURLOPT_URL => $url,CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0",CURLOPT_RETURNTRANSFER => 1,CURLOPT_HTTPHEADER => array("Content-Type: application/json-rpc"));curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查$html = curl_exec($ch);$info = curl_getinfo($ch);curl_close($ch);$resData = json_decode($html);Yii::error($html);if (!isset($resData->openid)) {Output::output(false, '1', '获取openid出错。', null);}Yii::error('openid == ' . $resData->openid);return $resData->openid;}
调用后台接口获取token
- 小程序端记录token到本地
wx.setStorageSync('token', token)
- 调用接口时,取出token传到后台
wx.getStorageSync('token')
*注意
- 临时登录凭证 code 只能使用一次
- 用户登录凭证(有效期五分钟)
微信小程序 微信授权登录 微信登录相关推荐
- 企业微信小程序_授权登录接口获取用户userid
文章目录 一.前置知识 1. 阅读 企业微信小程序开发文档 2. 企业微信小程序登录流程 3. 微信小程序区别 二.前端部分 2.1. 调用登录接口 2.2. 请求后端接口 2.3. 项目源码 三.后 ...
- 微信小程序之授权登录
微信小程序之授权登录 之前微信授权登录时是直接可以通过getUserInfo接口 弹出授权弹窗.由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通 ...
- 微信登录 后台 java_Java 后端 (Spring boot)+微信小程序的授权登录
微信小程序的授权登录 第一.Java后端代码如下 登录的接口的参数是微信小程序前端必须要传的参数微信小程序登录.授权的用户基本信息 wx.getUserInfo 特别注意 appid 和secret. ...
- 微信小程序之授权登录(附完整源码)
个人博客上已经同步更新了文章,有目录索引,阅读起来比较方便,欢迎大家移步个人博客上读阅~ 个人博客地址:http://zwd596257180.gitee.io/blog/2019/04/15/wec ...
- 微信小程序及Java后台测试登录
微信小程序及Java后台测试登录 文章目录 微信小程序及Java后台测试登录 一.使用的工具以及开发环境 二.微信端登录代码. 第一种方式,使用wx.getUserInfo直接获取微信头像,昵称. 第 ...
- php刷脸登录,PHP实现微信小程序人脸识别刷脸登录功能
首先我们先确认我们的百度云人脸库里已经上传了我们的个人信息照片 关注cs代写,有帮助! 然后我们在后台写刷脸登陆的接口login我们要把拍照获取的照片存储到服务器 public function l ...
- 微信小程序账号长时间未登录冻结解封
微信小程序账号长时间未登录冻结解封 1.账号找回链接[官方]:http://mp.weixin.qq.com/acct/findacct?action=scan 2.按照官方指引的三个操作步骤进操作, ...
- 微信小程序:超强大微信小程序源码下载内含几十款功能王者战力查询,游戏扫码登录,王者巅峰信息查询等等支持流量主收益和CPS收益
这是一款特别强大的一款微信小程序源码 初步算了一下,该款小程序目前包含了几十个功能 具体功能如以下: 游戏扫码登录 王者战力查询 改名生成(多种生成方式) 头像框制作(N款模板) 王者巅峰数据查询 王 ...
- 微信小程序自定义授权弹框
微信小程序自定义授权弹框 最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下: 此接口有调整,使用该接口将不再出现授权弹窗,请使用 <butt ...
- 微信中html5获取手机号,微信小程序用户授权获取手机号(getPhoneNumber)
前言 小程序有一个获取用户很便捷的api,就是通过getPhoneNumber获取用户的已经绑定微信的手机号码.有一点要大家注意,现在微信和注重用户体验,有些方法都是需要用户主动去触发才能调用的,比如 ...
最新文章
- 【组队学习】曹志宾:基于Python的会员数据化运营
- stick footers布局
- 机器学习算法_五分钟了解机器学习十大算法
- maven学习十之myEclipse搭建maven项目总结
- 个人图书管理系统c语言代码,c语言源代码---------------个人图书管理系统
- 【盘点2018】社交领域投融资报告来了!
- javacv 写mp4_JavaCV实现获取视频每帧并保存
- 大家马致远是哪个朝代的,马致远作品赏析
- MATLAB处理txt文档数据——以处理pscad输出数据为例
- 超市库存管理系统 (SSM JAVA)
- lamp兄弟连PHP视频教程 笔记心得
- LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(一)之LIN矩阵详解
- 记录和“异地恋女友”的第一次相见
- linux常用命令_Linux常用命令总结
- 【c#基础-MessageBox】MessageBox的使用和消息框
- C termios.h 简单用法
- 2.2 线性微分方程与常数变易法
- Java募捐_GitHub - javayhu/XingShan: 使徒行善,让行善成为一种习惯
- CPP头文件中不应包含using声明
- 【干货】我的机器学习入门路线图