关于微信授权与登录的相关操作(纯手敲)

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值