关于微信授权与登录的相关操作(纯手敲)
1.通过授权网址,拿到code
固定式授权网址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx70697366a034c0f7&redirect_uri=http://wd1700564.pro.wdcase.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
所含参数:appid,redirect_uri可变,其他固定参数值
appid,
redirect_uri(回调地址),
response_type,
scope,
state
授权成功后,通过$_GET['code']可以拿到返回的code值
2.通过code值拿到用户的access_token和openid
固定式获取网址:
https://api.weixin.qq.com/sns/oauth2/access_token?
appid=wx70697366a034c0f7&secret=0622bff1d1b1200a665b0caa4da7b3cd&code=$code&grant_type=authorization_code
所含参数:appid,secret,code可变,其他固定参数值
appid,
secret,
code,
grant_type
用cURL访问网址,成功访问后返回json格式的字符串,用json_decode(xx,true)转化为数组,通过$xx['access_token'],$xx['openid']可以拿到access_token和openid
3.通过用户的access_token和openid,用CURL微信登录,获取用户信息
固定式微信登录网址:
https://api.weixin.qq.com/sns/userinfo?
access_token=$access_token&openid=$openid(&lang=zh_CN)
所含参数:access_token,openid可变
access_token,
openid,
lang(可写或不写)
用cURL访问网址,成功访问后返回json格式的字符串,用json_decode(xx,true)转化为数组得到用户信息
'user_name'=>(string)$user_info['nickname'],//用户名
'user_sex'=>$user_info['sex'],//性别
'user_img'=>$user_info['headimgurl'],//头像
'open_id'=>$openid,//用户的openid
'user_time'=>time(),//登录时间
备注:
1.code:微信授权成功后会返回一个code
2.access_token:公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token,有效期7200s,每天调用获取的次数只有2000次,建议保存到数据库或缓存起来。网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
3.openid:公众号的普通用户的一个唯一的标识,只针对当前的公众号有效
4.cURL:模拟浏览器请求的工具,比如获取远程的网页和接口,比类似功能的file_contents(),file(),readfile()强大
使用cURL发送URL请求四步:
curl_init():初始化一个cURL会话
curl_setopt():设置请求选项
curl_exec():执行一个cURL会话,并获取相关的回复(返回json格式的数据)
curl_close():关闭一个cURL会话
微信授权curl_setopt()要设置的选项
CURLOPT_URL:需要获取的URL地址
CURLOPT_SSL_VERIFYPEER:禁用后cURL将终止从服务端进行验证
CURLOPT_SSL_VERIFYHOST:禁用后就不检查证书中是否有CN(common name)字段和校验当前的域名是否与CN匹配
CURLOPT_RETURNTRANSFER:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
5.获取当前URL作为redirect_uri(回调地址)时要用到的$_SERVER[''],一般都封装在get_url()方法中
如 URL是http://www.5idev.com/php/index.php/test/foo?username=hbolive
$_SERVER['SERVER_PORT']:获取端口(80是http://;443是https://)
$_SERVER['PHP_SELF']:获取URL除域名和参数的那块(如:/php/index.php/test/foo)
$_SERVER['SCRIPT_NAME']:获取URL除域名和参数和文件名的那块(如:/php/index.php)
$_SERVER['REQUEST_URL']:获取URL除域名的那块(如:/php/index.php/test/foo?username=hbolive)
$_SERVER['PATH_INFO']:获取URL文件名(如:/test/foo)
$_SERVER['QUERY_STRING']:获取URL的参数,不带问号"?"(如:username=hbolive)
$_SERVER['HTTP_HOST']:获取域名(如:www.5idev.com)
6.urlencode()和urldecode(),一般用于URL
urlencode():将字符串用URL编码
urldecode():将以URL编码的字符串解码(":"用$3A代替;"/"用%2F代替)
--------------------
扩展:授权登录后可以继续做的事情
4.判断是否关注微信公众号
网址:
https://api.weixin.qq.com/cgi-bin/user/info?
access_token=$access_token2&openid=$openid
所含参数
access_token:关注的微信号的access_token,保留7200s,过了两小时要重新获取
openid:用户的openid
5.获取微信公众号access_token
网址:
https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid={$wechat[appid]}&secret={$wechat[appsecret]}
所含参数
grant_type:固定参数值
appid:微信公众号的appid
secret:微信公众号的appsecret
关于微信授权与登录的相关操作(纯手敲)相关推荐
- mui微信授权和登录
微信授权和登录 var authBtns = ['weixin']; //配置业务支持的第三方登录var auths = {};var oauthArea = document.querySelect ...
- 微信授权之登录、注册、关联微信号全流程图
QQ:285679784 欢迎加入博主CSDN资源QQ群799473954(附加信息:CSDN博客)一起学习 ! 实现微信公众号内支付时,必须提供微信用户的openid.新用户刚进入页面时强制打开 ...
- uniapp实现微信授权一键登录
<template><view class="login apple-safari-page"><button class="autho-b ...
- [小黄书小程序]微信授权登录
在上一篇文章中,我们在后台实现了会员管理以及会员注册登录的逻辑.其中登录方式包括: 通过手机号码和验证码登录 通过微信授权登录 在小黄书小程序上,我们支持第二种登录方式.第一种方式,今后看情况再酌情进 ...
- Vue 移动端 hash模式下微信授权登录
需求分析: 1.移动端微信公众号项目,需要获取微信授权进行登录 2.默认打开首页,在路由进入之前进行判断,有如下三种情况 3.本项目有两种账号类型:商家.企业,需在登录页进行选择 未授权过,跳到微信授 ...
- 小程序第三方微信授权登录的实现
在微信小程序下,小程序登录功能一般会通过 OpenID 或 UnionID 作为唯一标识,与小程序服务的账号体系进行关联打通,完成用户账户体系的构建与设计. 如果在像支付宝小程序.百度小程序第三方平台 ...
- 自有App小程序第三方微信授权登录的实现
在微信小程序下,小程序登录功能一般会通过 OpenID 或 UnionID 作为唯一标识,与小程序服务的账号体系进行关联打通,完成用户账户体系的构建与设计. 如果在像支付宝小程序.百度小程序第三方平台 ...
- 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...
登录涉及的面比较多:触发场景上,各种页面各种交互路径都可能触发登录:交互过程上,既需要用户提供/证明id,也需要后端记录维护,还需要保证安全性:复用场景上,既是通用功能,需要多场景多页面甚至多小程序复 ...
- 一篇文章,带你了解微信扫码登录
文章目录 前言 一.功能背景 二.扫码登录原理 1.基本原理 三.实现效果图 1.登录页 2.点击微信账号登录 3.已绑定微信的账号 4.未绑定微信号的账号 四.代码实现 1.准备工作 2.编写代码 ...
最新文章
- Java中toString函数干嘛用?
- 【CodeForces - 1201C】Maximum Median(思维,水题)
- 测试显示富士通UHF RFID亚麻标签可在1.5T及3T的MRI系统内使用
- webpack入门学习手记(一) 1
- linux 内核 发送数据类型,Linux内核数据类型及跨平台
- java 格式化字符串
- 锐捷linux网卡,CentOS 7安装MentoHUSTt锐捷认证程序
- ARM处理器性能对比
- 三步激活win10(转)
- 刚培训的java程序员怎么找工作,快来看鸭~
- 计算机考证决心书怎样写
- sx1278组网01——网关
- 基于云的文档管理软件/文档管理系统(DMS)
- 【STM8】IAR 项目新建步骤
- 6-3 计算Fibonacci数列每一项时所需的递归调用次数 (10 分)
- 导航网这个最强大吗?
- 一直以来,区块链的基础性和底层性,都是人们津津乐道的话题
- 测试人员,如何准备测试数据
- wallpaper怎么改后缀_怎么让家里无线网速变快
- Web迅雷远程任意文件读取漏洞