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

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

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

第三步:拉取用户信息(需scope为 snsapi_userinfo)

二、我这里直接出代码了,一共2个文件。

//其它文件调用UserInfo.php的时候注意namespace。

use wx\userInfo\UserInfo;

include 'UserInfo.php';

$wx = new UserInfo();

$data = $wx->get_user_all();

1配置文件config.php

namespace wx\wxConfig;

/**

* 微信请求相关配置类

*/

class ConfigTool{

/**

* 微信配置参数

* @return array 配置参数

*/

public function Config(){

// appID

$config['appid'] = '';

// appSecret

$config['appsecret'] = '';

// 微信回调链接地址(本页)

$config['redirect_uri'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

// 用户授权并获取code的url地址

$config['authorize_url'] = 'https://open.weixin.qq.com/connect/oauth2/authorize';

// 获取openid和access_toke的url地址

$config['access_token_url'] = 'https://api.weixin.qq.com/sns/oauth2/access_token';

// 获取拉取用户信息(需scope为 snsapi_userinfo)的url地址

$config['userinfo_url'] = 'https://api.weixin.qq.com/sns/userinfo';

// 本文件夹所在的url路径

$config['self_path'] = 'http://'.dirname($_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);

return $config;

}

}

?>

2.获取用户信息文件UserInfo.php

namespace wx\userInfo;

use wx\wxConfig\ConfigTool;

include 'config.php';

/**

* 获取微信用户信息

* $wx = new UserInfo();

* $data = $wx->get_user_all();

*/

class UserInfo{

private $weixin_config = array();

public function __construct() {

$re = new ConfigTool;

$this->weixin_config = $re->Config(); //载入配置文件

}

/**

* 获取微信用户信息

* @return array 微信用户信息数组

*/

public function get_user_all(){

if (!isset($_GET['code'])){//没有code,去微信接口获取code码

$callback = $this->weixin_config['redirect_uri'];//服务器返回url,这里是本页url

$this->get_code($callback);

} else {//获取code后跳转回来到这里了

$code = $_GET['code'];

$data = $this->get_access_token($code);//获取网页授权access_token和用户openid

$data_all = $this->get_user_info($data['access_token'],$data['openid']);//获取微信用户信息

return $data_all;

}

}

/**

* 1、用户授权并获取code

* @param string $callback 微信服务器回调链接url

*/

private function get_code($callback){

$appid = $this->weixin_config['appid'];

$scope = 'snsapi_userinfo';//snsapi_base只能获取access_token和openID,snsapi_userinfo可以获取更详细的用户资料,比如头像、昵称、性别等

$state = md5(uniqid(rand(), TRUE));//唯一ID标识符绝对不会重复

$url = $this->weixin_config['authorize_url'].'?appid=' . $appid . '&redirect_uri=' . urlencode($callback) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';

header("Location:$url");

}

/**

* 2、使用code换取access_token

* @param string 用于换取access_token的code,微信提供

* @return array access_token和用户openid数组

*/

private function get_access_token($code){

$appid = $this->weixin_config['appid'];

$appsecret = $this->weixin_config['appsecret'];

$url = $this->weixin_config['access_token_url'].'?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';

$user = json_decode(file_get_contents($url));

if (isset($user->errcode)) {

echo 'error:' . $user->errcode.'


msg :' . $user->errmsg;

exit;

}

$data = json_decode(json_encode($user),true);//返回的json数组转换成array数组

return $data;

}

/**

* 3、使用access_token获取用户信息

* @param string access_token

* @param string 用户的open id

* @return array 用户信息数组

*/

private function get_user_info($access_token,$openid){

$url = $this->weixin_config['userinfo_url'].'?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';

$user = json_decode(file_get_contents($url));

if (isset($user->errcode)) {

echo 'error:' . $user->errcode.'


msg :' . $user->errmsg;

exit;

}

$data = json_decode(json_encode($user),true);//返回的json数组转换成array数组

return $data;

}

}

?>

三、觉得两个文件多,也可以用一个文件类封装。场景不同,喜欢哪个用哪个。

微信公众平台OAuth2.0网页授权

微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...

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

一.这个文件微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:判断有没有code,有code去第三步,没有code去第二步 第二步:用户同意授权,获取code 第三步:通过co ...

php 微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo

get_wx_data.php <?php /** * 获取微信用户信息 * @author: Lucky hypo */ class GetWxData{ private $appid = ' ...

微信公众平台oauth2&period;0网页授权参考资料

http://www.wangwenxiao.com/weixin/wxgzptoauth2_0wysq_12.html

C&num;-MVC开发微信应用&lpar;2&rpar;--OAuth2&period;0网页授权

微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...

用Chrome查看微信访问需要OAuth2&period;0网页授权的页面

在PC浏览器打开某网站页面提示页面错误,是因为进行了OAuth2.0网页授权 有以下限制, 1.必须在微信打开 2.微信页面授权 其中第一步比较容易实现,修改下ua(user-agent),让其携带“ ...

微信公众平台OAuth2&period;0授权

1. 配置授权回调页面域名 进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息,点击右侧的修改. 授权回调域名配置规范为全域名并且不带http,比如需要网页授权的域名为: ...

微信公众号开发(5)---使用开源组件开发公众号OAuth2&period;0网页授权授权登录

搞清微信公众号授权登录的步骤步骤,我们的开发就完成了一大步 献上github 地址: https://github.com/Wechat-Group/weixin-java-tools/wiki/MP ...

微信公众平台开发(71)OAuth2&period;0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...

随机推荐

C&num;中精确计时的一点收获 【转】

C#中精确计时的一点收获 [转] 以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @  3.00GHz 2.99GHz,2.96G ...

Xpath定位大全

selenium使用Xpath定位之完整篇   其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景.在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需 ...

BLE 安卓APP控制LED灯的实现(转)

源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final Blu ...

C&plus;&plus;格式化硬盘程序

#include using namespace std; //声明命名空间 void main() {  char format[12]="format", name[10], ...

springmvc的介绍和第一个例子

SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...

Nginx 初識

今天簡單了解了一下Nginx,并在本機安裝,并簡單配置了一下,道理什麼的還不懂,就是看能不能跑起來. 1.安裝從官網下載就好,把文件隨便解壓在一個英文目錄裡面. 然後修改配置文件,修改的內容如下: 2 ...

学习windows编程 day6 之模拟记事本

//短的函数最好定义为宏 #define BUFFER(x,y) *(y*cxBuffer+x+pBuffer)//取出一个字符 //字符消息 //WM_CHAR,WM_DEADCHAR,WM_SYS ...

基于obs&plus;nginx-rtmp-module搭建自己直播的系统

前言 一句唠叨,工欲善其事,必先利其器,在程序员的工作里,搭建各种环境往往花费过多不必要的时间,这里建议搭建服务端环境时,尽量避开win.macos这种系统,个人比较推崇centos. 操作 下面以c ...

使用 HTML5 History 新特性增强 Ajax 的体验&lpar;转&rpar;

一. 场景再现 如大家熟知,Ajax 可以实现页面的无刷新操作,但会造成两个与普通页面操作(有刷新地改变页面)有着明显差别的问题—— URL 没有修改以及无法使用前进.后退按钮.例如常见的 Ajax ...

微信授权demo php,PHP微信公众平台oauth2.0网页授权登录类的封装demo相关推荐

  1. 微信公众平台oauth2.0 php,微信公众平台oauth2.0网页授权

    本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对 ...

  2. 微信公众平台OAuth2.0授权

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众平台OAuth2.0授权详细步骤如下: 1. 用户关注微信公众账号. 2. 微信公众账号提供用户请求授权页面URL. ...

  3. 微信公众平台开发 OAuth2.0网页授权认证

    一.什么是OAuth2.0 官方网站:http://oauth.NET/   http://oauth.Net/2/ 权威定义:OAuth is An open protocol to allow s ...

  4. 微信公众平台开发OAuth2.0网页授权(转)

    微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息  作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在 ...

  5. 微信开发之获取OAuth2.0网页授权认证和获取用户信息进行关联(转:http://playxinz.iteye.com/blog/2249634)

    最近有做了关于微信公众号和自己网站用户进行用户关联授权登录的一个功能,主要是用户关注该公众号,点击会员中心,则会弹出需要关联授权的网页授权:OAuth2.0网页授权,然后用户同意获取用户信息,进行用户 ...

  6. 微信OAuth2.0网页授权设置一个域名需多个域名使用的问题

    最近遇到一个问题,一个微信公众号,需要在多个域名上使用OAuth2.0网页授权,但微信OAuth2.0网页授权回调域名只能设置一个. 解决办法: 通过多一次的跳转,解决了微信限制回调域名只能设置一个的 ...

  7. Java微信公众平台开发之OAuth2.0网页授权

    根据官方文档点击查看在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的"开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息"的配置选项中,修 ...

  8. (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835

    从接触公众号到现在,通过不断积累学习,对如何调用微信提供接口有了一定的见解.当然在开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开 ...

  9. 微信 oauth2.0 php,微信公众平台OAuth2.0 认证

    第一步:引导用户打开如下链接 (详细介绍见OAuth2.0) $url = urlencode('http://xxx.com/xxx'); $newurl = "https://open. ...

最新文章

  1. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本
  2. 数据库副本的自动种子设定(自增长)
  3. python3-pandas DataFrame 索引、bool索引、pandas 字符串方法
  4. Cocos2d-x.3.0开发环境搭建
  5. python如何生成excel文件夹_用python脚本通过excel生成文件夹树结构
  6. elementui 日期选择值格式
  7. Java集合框架源码解读(5)——TreeMap
  8. 教你玩转CSDN博客
  9. 小程序项目实战—购物商城微信小程序
  10. md5加密特征码java,讨论:加密算法特征码及其识别
  11. 所谓的进步和提升,就是完成认知升级
  12. 处理各种压力(情绪、家庭)时,需要注意什么!
  13. LCD12864 液晶显示-汉字及自定义显示(串口)
  14. STM32(1)跑马灯
  15. 今天开始使用oschina
  16. 疫情当前,「在家远程办公」可能是最佳选择
  17. 洛谷4895 独钓寒江雪 (树哈希+dp+组合)
  18. wolai一款不错的国产笔记协作平台!可替代notion的协同平台
  19. mac上一款简单易用的卸载工具:
  20. Nginx服务基础:配置文件、访问状态统计、虚拟主机

热门文章

  1. 【牛腩新闻】——首页图片加载不出来
  2. Cisco IGRP
  3. Appium--swipe滑动方法
  4. 整理:X86架构图示以及各部分解释
  5. 专题2:matlab矩阵处理
  6. 四维超混沌系统matlab
  7. sx1278lora模块的常见问题解答
  8. 视频基本术语介绍 码流、帧率、分辨率、I帧、带宽
  9. 招银网络科技Java社招面经
  10. 微信跳一跳游戏的脚本