打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
微信授权登录并获取用户信息接口开发

微信授权登录并获取用户信息接口开发

  近排在做微信接口开发,所以总结一下微信授权登录并获取用户信息 这个接口的开发流程。

一、首先你的微信公众号要获得相应的AppID和AppSecret,申请微信登录且通过审核后,才可开始接入流程。

二、授权流程

1、流程说明

 

(1). 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

 

 

(2). 通过code参数加上AppID和AppSecret等,通过API换取access_token;

 

(3). 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

2、获取access_token时序图:

三、开发(我的用是CI框架,其实用什么框架都一样,MVC模式就行了)

1、请求CODE

  weixin.php

 1 <?php 2     class weixinController extends CI_Controller { 3         public $userInfo; 4         public $wxId; 5  6  7         public function __construct(){ 8             parent::__construct(); 9 10             //只要用户一访问此模块,就登录授权,获取用户信息11             $this->userInfo = $this->getWxUserInfo();12         }13     14 15         /**16          * 确保当前用户是在微信中打开,并且获取用户信息17          *18          * @param string $url 获取到微信授权临时票据(code)回调页面的URL19          */20         private function getWxUserInfo($url = '') {21             //微信标记(自己创建的)22             $wxSign = $this->input->cookie('wxSign');23             //先看看本地cookie里是否存在微信唯一标记,24             //假如存在,可以通过$wxSign到redis里取出微信个人信息(因为在第一次取到微信个人信息,我会将其保存一份到redis服务器里缓存着)25             if (!empty($wxSign)) {26                 //如果存在,则从Redis里取出缓存了的数据27                 $userInfo = $this->model->redisCache->getData("weixin:sign_{$wxSign}");28                 if (!empty($userInfo)) {29                     //获取用户的openid30                     $this->wxId = $userInfo['openid'];31                     //将其存在cookie里32                     $this->input->set_cookie('wxId', $this->wxId, 60*60*24*7);33                     return $userInfo;34                 }35             }36 37             //获取授权临时票据(code)38             $code = $_GET['code'];39             if (empty($code)) {40                 if (empty($url)) {41                     $url = rtirm($_SERVER['QUERY_STRING'], '/');42                     //到WxModel.php里获取到微信授权请求URL,然后redirect请求url43                     redirect($this->model->wx->getOAuthUrl(baseUrl($url)));44                 }45             }46 47 48         }49 50 51 52 53 54 55 56 57 58 59 60 61     }62 ?>

   Wxmodel.php

 1 <?php 2     class WxModel extends ModelBase{ 3         public $appId; 4         public $appSecret; 5         public $token; 6  7         public function __construct() { 8             parent::__construct(); 9 10             //审核通过的移动应用所给的AppID和AppSecret11             $this->appId = 'wx0000000000000000';12             $this->appSecret = '00000000000000000000000000000';13             $this->token = '00000000';14         }15 16         /**17          * 获取微信授权url18          * @param string 授权后跳转的URL19          * @param bool 是否只获取openid,true时,不会弹出授权页面,但只能获取用户的openid,而false时,弹出授权页面,可以通过openid获取用户信息20          *   21         */22        public function getOAuthUrl($redirectUrl, $openIdOnly, $state = '') {23         $redirectUrl = urlencode($redirectUrl);24         $scope = $openIdOnly ? 'snsapi_base' : 'snsapi_userinfo';25         $oAuthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appId}&redirect_uri={$redirectUrl}&response_type=code&scope=$scope&state=$state";26         return $oAuthUrl;27        }

 

这里附上请求参数说明和返回值说明

  请求参数说明:

 

  响应返回值说明:

 

  当请求成功,会redirect到请求参数中的redirect_uri的值中去,其实又回到weixin.php的$this->userInfo = $this->getWxUserInfo();这行去,然后再一次进入到getWxUserInfo()方法,此时

            //获取授权临时票据(code)            $code = $_GET['code'];

 这行也已经能获取得到code的值了。接着进行第二步。

 

2、通过code获取access_token

  weixin.php

获取access_token的控制器代码

  WxModel.php

获取access_token的Model代码

这里附上参数说明

  请求参数说明:

 

  响应返回值说明:

  当返回错误时是这样子的:

 

3、通过access_token调用接口(获取用户信息)
  获取access_token后,进行接口调用,有以下前提:

  (1)access_tokec有效且未超时;

  (2)微信用户已授权给第三方应用账号相应的接口作用域(scope)。

  

  以下是获取用户信息的代码

  weixin.php

获取用户信息的Controller

  WxModel.php

获取用户信息的Model

  Common.php

获取用户信息的自定义函数

  

  通过以上三步调用接口,就可以获取到用户的微信账号信息了。

  大家可以认真看看代码, 里面很多地方我都带上了注释,很容易理解。希望想学习的朋友可以认真看看。

  

 

  如果此博文有哪里讲得让人难以理解的,欢迎留言交流,如文章有解释出的地方,欢迎指出。

  

  如果您觉得能在此博文学到新知识,请在下方为我顶一个,如文章有解释错的地方,欢迎指出。

   互相学习,共同进步!

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
微信获取用户信息的两个接口和两个ACCESS_TOKEN
PHP 微信公众号开发
微信公众平台开发(71)OAuth2.0网页授权
java 微信授权登录配置
微信公众平台开发 隐者黑鹰
微信公众账号高级接口使用小结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服