PHP微信OAuth2.0网页授权,获取用户信息代码类封装demo(二)

一、这个文件微信授权使用的是OAuth2.0授权的方式。主要有以下简略步骤:

  第一步:判断有没有code,有code去第三步,没有code去第二步

  第二步:用户同意授权,获取code

  第三步:通过code换取网页授权access_token

  第四步:使用access_token获取用户信息

二、代码GetWxUser.php

 1 <?php
 2 /**
 3  * 获取微信用户信息
 4  * @author: Lucky hypo
 5  */
 6 class GetWxUser{
 7     private $appid = ‘‘;
 8     private $appsecret = ‘‘;
 9    /**
10     * 1、获取微信用户信息,判断有没有code,有使用code换取access_token,没有去获取code。
11     * @return array 微信用户信息数组
12     */
13     public function get_user_all(){
14         if (!isset($_GET[‘code‘])){//没有code,去微信接口获取code码
15             $callback = ‘http://‘.$_SERVER[‘HTTP_HOST‘].$_SERVER[‘PHP_SELF‘];//微信服务器回调url,这里是本页url
16             $this->get_code($callback);
17         } else {//获取code后跳转回来到这里了
18             $code = $_GET[‘code‘];
19             $data = $this->get_access_token($code);//获取网页授权access_token和用户openid
20             $data_all = $this->get_user_info($data[‘access_token‘],$data[‘openid‘]);//获取微信用户信息
21             return $data_all;
22         }
23     }
24    /**
25     * 2、用户授权并获取code
26     * @param string $callback 微信服务器回调链接url
27     */
28     private function get_code($callback){
29         $appid = $this->appid;
30         $scope = ‘snsapi_userinfo‘;
31         $state = md5(uniqid(rand(), TRUE));//唯一ID标识符绝对不会重复
32         $url = ‘https://open.weixin.qq.com/connect/oauth2/authorize?appid=‘ . $appid . ‘&redirect_uri=‘ . urlencode($callback) .  ‘&response_type=code&scope=‘ . $scope . ‘&state=‘ . $state . ‘#wechat_redirect‘;
33         header("Location:$url");
34     }
35    /**
36     * 3、使用code换取access_token
37     * @param string 用于换取access_token的code,微信提供
38     * @return array access_token和用户openid数组
39     */
40     private function get_access_token($code){
41         $appid = $this->appid;
42         $appsecret = $this->appsecret;
43         $url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘ . $appid . ‘&secret=‘ . $appsecret . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘;
44         $user = json_decode(file_get_contents($url));
45         if (isset($user->errcode)) {
46             echo ‘error:‘ . $user->errcode.‘<hr>msg  :‘ . $user->errmsg;exit;
47         }
48         $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
49         return $data;
50     }
51   /**
52     * 4、使用access_token获取用户信息
53     * @param string access_token
54     * @param string 用户的openid
55     * @return array 用户信息数组
56     */
57     private function get_user_info($access_token,$openid){
58         $url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ . $access_token . ‘&openid=‘ . $openid . ‘&lang=zh_CN‘;
59         $user = json_decode(file_get_contents($url));
60         if (isset($user->errcode)) {
61             echo ‘error:‘ . $user->errcode.‘<hr>msg  :‘ . $user->errmsg;exit;
62         }
63         $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
64         return $data;
65     }
66 }
67 ?>

不足之处,请留言告知,谢谢!

原文地址:https://www.cnblogs.com/hiit/p/8669361.html

时间: 2024-10-08 00:00:38

PHP微信OAuth2.0网页授权,获取用户信息代码类封装demo(二)的相关文章

微信OAuth2.0网页授权接口

微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本号.主要实现了oauth网页受权,以及部分其它接口. 用法 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息.甚至包含微信昵称.头像等实用的数据,开发人员们能够凭此设计出很多其它更丰富的页面应用,比方近期一直非常火爆的红包类活动.除此之外还有个额外的优点,就是能够控制页面在非微信浏览器中无法打开,能够降低代码被人窥窃的风险. 那么红包类活动是怎样使用OAuth2.0

微信公众平台网页授权获取用户基本信息(VS.NET版)

一.前期准备工作 1.接口权限表点击修改[OAuth2.0网页授权].(读者可网上搜索什么是OAuth2.0) 注意:此处应填写与回调页面相同的域名. 2.编写正确的URL https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号APPID &redirect_uri= RedirectUri&response_type=code&scope=snsapi_userinfo&state=STATE#wecha

微信开发之网页授权获取用户基本信息

微信官方文档:网页授权获取用户基本信息 具体而言,网页授权流程分为四步:1.引导用户进入授权页面同意授权,获取codehttps://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo

(十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

微信网页授权-获取用户信息

第一步:修改网页授权安全域名,什么叫安全域名?安全域名就是说只有这个域名的网页才可以安全的进行网页授权以及获取用户信息. 第二步:下载下这个 MP_verify_Sb2ASLINFP09cMn6.txt(点击下载)放到你的服务器根目录下,可以通过你上面配置的域名直接访问的到,即:http://www.zheyue.me/MP_verify_Sb2ASLINFP09cMn6.txt  可以访问的到.点击确认完成. 第三步: 对自己做的网页地址进行包装,引导客户点击新包装的地址即可.例: https

微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动

在腾讯的微信公众平台开发者文档,网页授权获取用户基本信息这一节中写道”在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名.请注意,这里填写的域名不要加http://“,链接: http://mp.weixin.qq.com/wiki/index.php?title=%e7%bd%91%e9%a1%b5%e6%8e%88%e6%9d%83%e8%8e%b7%e5%8f%96%e7%94%a8%e6%88%b7%e5%9f%ba%e6%9c%ac%e4%bf%

微信的接口网页授权获取用户基本信息不是只有认证服务号才有

账号的主体类型是非企业的认证订阅号也有网页授权获取用户基本信息这个接口权限

微信OAuth2.0网页授权

这是一个实用且通用的功能,说通俗点就是用微信帐号登录第三方网站,经用户确认后,允许网站获取用户基本资料. 技术资料参见微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842&token=&lang=zh_CN 1.实现这一功能需要先设置授权回调页面域名,如下图: 2.主要代码(只获取用户信息,登录网站部分略) <?php if(isset($_GET['code'])){ $code =

spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: Java代码   /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) pu