PHP实现微信网页授权开发教程,php授权教程

微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前,想要获取消息信息只能在用户和公众号交互时根据openid获取用户信息;而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息。

微信网页授权时通过OAuth2.0完成的,整个过程分为三步:

用户授权,获取code;

根据code获取access_token【可通过refresh_token刷新获取较长有效期】

通过access_token和openid获取用户信息

对微信网页授权过程做了简单封装:

app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";

}

/**

* 获取授权token

*

* @param string $code 通过get_authorize_url获取到的code

*/

public function get_access_token($app_id = '', $app_secret = '', $code = '')

{

$token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";

$token_data = $this->http($token_url);

if($token_data[0] == 200)

{

return json_decode($token_data[1], TRUE);

}

return FALSE;

}

/**

* 获取授权后的微信用户信息

*

* @param string $access_token

* @param string $open_id

*/

public function get_user_info($access_token = '', $open_id = '')

{

if($access_token && $open_id)

{

$info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";

$info_data = $this->http($info_url);

if($info_data[0] == 200)

{

return json_decode($info_data[1], TRUE);

}

}

return FALSE;

}

public function http($url, $method, $postfields = null, $headers = array(), $debug = false)

{

$ci = curl_init();

/* Curl settings */

curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($ci, CURLOPT_TIMEOUT, 30);

curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

switch ($method) {

case 'POST':

curl_setopt($ci, CURLOPT_POST, true);

if (!empty($postfields)) {

curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

$this->postdata = $postfields;

}

break;

}

curl_setopt($ci, CURLOPT_URL, $url);

curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ci, CURLINFO_HEADER_OUT, true);

$response = curl_exec($ci);

$http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

if ($debug) {

echo "=====post data======\r\n";

var_dump($postfields);

echo '=====info=====' . "\r\n";

print_r(curl_getinfo($ci));

echo '=====$response=====' . "\r\n";

print_r($response);

}

curl_close($ci);

return array($http_code, $response);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

您可能感兴趣的文章:PHP 程序授权验证开发思路

新浪微博API开发简介之用户授权(PHP基础篇)

php使用Cookie控制访问授权的方法

php实现paypal 授权登录

weiphp微信公众平台授权设置

http://www.bkjia.com/PHPjc/1093698.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1093698.htmlTechArticlePHP实现微信网页授权开发教程,php授权教程 微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前...

微信网页开发教程 php,PHP实现微信网页授权开发教程,php授权教程_PHP教程相关推荐

  1. php教程数据库操作,PHP实现对文本数据库的常用操作方法实例演示_PHP教程

    PHP可以实现对文本数据库的数据的显示.加入.修改.删除.查询等五大基本操作. 我们以一个留言本程序为例,简述一下PHP实现对文本数据库的数据显示.加入.修改.删除.查询五大基本操作的方法. 此文本数 ...

  2. php怎么开发微信网页,PHP实现微信网页授权开发的步骤

    这篇文章主要为大家分享了PHP实现微信网页授权开发教程,开发者可以通过授权后获取用户的基本信息,感兴趣的小伙伴们可以参考一下 微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息 ...

  3. 微信小程序开发教程:项目一微信小程序入门 课后习题

    <微信小程序开发教程>主编/黄寿孟 易芳 陶延涛 湖南大学出版社 目录 一.单选题 二.多选题 三.判断题 四.填空题 五.简答题 1.请简述微信开发者工具中调试器功能. 2.请简述微信小 ...

  4. 微信公众平台开发教程(九)微信公众平台通用开发框架

    微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考: 如何将微信相关的处理与业务系统联系在一起? 如何做到彼此分离,且易于扩展? 能否开发一套独立的微信服务框 ...

  5. 微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现

    接着上面微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现.(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程序名片夹详情页开 ...

  6. 微信公众号html在线编辑器,【微信公众平台工具开发】雷人微信网页编辑器

    原标题:[微信公众平台工具开发]雷人微信网页编辑器 [微信公众平台工具开发]雷人微信网页编辑器 雷人微信编辑器--真正的微信神器,可以将热门.头条和自己感兴趣的文章,包括微信朋友圈分享的公众号里面的精 ...

  7. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  8. 微信公众平台开发教程(一) 微信公众账号注册流程

    微信公众平台开发教程(一) 微信公众账号注册流程 具体的操作步骤 1.注册公众账号 注册地址:http://mp.weixin.qq.com/ 1)首先需要邮箱注册: 2)邮箱激活.邮箱将会收到激活邮 ...

  9. 微信公众平台开发教程第2篇-----微信开发者接入

    原文地址为: 微信公众平台开发教程第2篇-----微信开发者接入 最近几天在群里看到没有接触过开发的朋友也有在玩微信的公众平台,微信用户到目前已经达到3个亿了吧!!  我不知道伙伴们是因为什么而接触微 ...

最新文章

  1. UML类图与类的关系
  2. 利用MAVEN打包可运行jar包,包括依赖的第三方包
  3. 收不回来的value
  4. SQLServer数据库收缩相关知识笔记
  5. springboot使用AOP打印日志信息
  6. java byte short_java.lang.Short.byteValue()方法实例
  7. springmvc细节篇
  8. java web 限下载速_JavaWeb实现文件上传与下载的方法
  9. delphi7 安装 indy10.2.3
  10. dell-xps-8930 台式机双硬盘 双系统安装 win10+Ubuntu
  11. 迄今为止最完整的DDD实践
  12. 基于字典爆破的子域名脚本
  13. 计算机主机是几几年的怎么查,怎样查询电脑上次开机时间_电脑开机时间查询方法-系统城...
  14. 2023山西大学计算机考研信息汇总
  15. typora全局替换文本
  16. JMH基准测试工具 (一):介绍
  17. A.一个部族,一个民族,一个弗雷尔卓德(素数筛+线段树)
  18. 聊聊软件登录界面的设计与交互
  19. cad延伸命令怎么用_CAD高手不可不知,走心CAD命令汇总,设计院师傅都在用
  20. win10系统D盘Drivers文件夹可以删除吗--win10专业版

热门文章

  1. vb光环褪去java、c/c++/c#成编程主流
  2. 闲话 - 火车硬座座位分布图
  3. 计算机改成服务器,旧电脑主机如何改成服务器
  4. 如何将随机数存入数组java_JAVA怎么把随机数赋给数组
  5. c语言编程求连续几日的温差最大 最小值,数控维修理论题库(含答案)X2份..doc
  6. bilibili 解析_用 Python 抓取 bilibili 弹幕并分析!
  7. fiddler如何设置过滤https_手把手教你如何给网站设置https
  8. html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注
  9. matplotlib调节colorbar的大小
  10. 利用gitbash上传项目到github