1. <?php
  2. /**
  3. * 通过$appid、$appsecret获得基础支持的接口唯一凭证access_token,返回值为array类型
  4. */
  5. function get_access_token_base($appid , $appsecret ) {
  6. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
  7. $output = https_request( $url );
  8. $jsoninfo = json_decode($output, true);
  9. return $jsoninfo;
  10. }
  11.  
  12. //=======================================================================================================================================
  13.  
  14. /**
  15. * 通过网页授权access_token和用户openid获取用户信息
  16. * 返回值为array类型
  17. */
  18. public function get_userinfo($access_token , $openid ) {
  19. $url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
  20. $output = https_request( $url );
  21. $jsoninfo = json_decode($output, true);
  22. return $jsoninfo;
  23. }
  24.  
  25. //=======================================================================================================================================
  26.  
  27. /**
  28. * 获取JS接口中的签名signature
  29. */
  30. function jssdk( $appid , $appsecret $access_token){
  31. //获取缓存的access_token
  32. $access_token = S('access_token');
  33. if( $access_token =="" ) {
  34. $jsoninfo = $this->get_access_token( $appid, $appsecret );
  35. $access_token = $jsoninfo['access_token'];
  36. S('access_token' , $access_token , );
  37. }
  38.  
  39. $jsapi = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi");
  40. $jsapi = json_decode($jsapi);
  41. $j = get_object_vars($jsapi);
  42. $jsapi = $j['ticket'];//get JSAPI
  43.  
  44. $time = ;
  45. $noncestr= $time;
  46. $jsapi_ticket= $jsapi;
  47. $timestamp=$time;
  48. $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  49. $and = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url."";
  50. $signature = sha1($and);
  51. return $signature;
  52. }
  53.  
  54. //=======================================================================================================================================
  55.  
  56. /**
  57. * 若在TP框架中,可用此方法将微信JS接口所需要的参数传递至模板中
  58. */
  59. function js_param_to_temp( $appid , $appsecret, $access_token ) {
  60. //获取缓存的access_token
  61. $access_token = S('access_token');
  62. if( $access_token =="" ) {
  63. $jsoninfo = $this->get_access_token( $appid, $appsecret );
  64. $access_token = $jsoninfo['access_token'];
  65. S('access_token' , $access_token , );
  66. }
  67. $this->assign('appid' , $appid);
  68. $jsapi = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi");
  69. $jsapi = json_decode($jsapi);
  70. //将对象转为数组
  71. $j = get_object_vars($jsapi);
  72. $jsapi = $j['ticket'];//get JSAPI
  73.  
  74. $time = time();
  75. $noncestr= $time;
  76. $this->assign('noncestr' , $noncestr);
  77. $jsapi_ticket= $jsapi;
  78. $timestamp=$time;
  79. $this->assign('timestamp' , $timestamp);
  80. $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  81. $and = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url."";
  82. $signature = sha1($and);
  83. $this->assign('signatrue' , $signature);
  84.  
  85. }
  86.  
  87. //=======================================================================================================================================
  88.  
  89. /**
  90. * 构造获取用户信息所需要的code,的链接
  91. * $jump_url:为用户授权后的跳转地址,可用get方式获取code,且只能使用一次
  92. * $scope:为应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
  93. * snsapi_userinfo: (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
  94. */
  95. function construct_getcode_url( $appid, $jump_url, $scope="snsapi_userinfo" ) {
  96. $jump_u = urlencode( $jump_url );
  97. $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid .
  98. "&redirect_uri=" . $jump_url . "&response_type=code&scope=" . $scope . "&state=1#wechat_redirect";
  99. return $url;
  100. }
  101.  
  102. //=======================================================================================================================================
  103.  
  104. /**
  105. * 获取网页授权access_token
  106. * 所需要的参数必须有用户授权后返回的code值
  107. * 返回值为array类型
  108. * 包括:access_token、expires_in、refresh_token、scope、unionid
  109. */
  110. function get_access_token_web( $appid, $appsecret, $code ) {
  111. $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=". $appid ."&secret=". $appsecret ."&code=". $code ."CODE&grant_type=authorization_code";
  112. $output = https_request( $url );
  113. $jsoninfo = json_decode($output, true);
  114. return $jsoninfo;
  115. }
  116.  
  117. //=======================================================================================================================================
  118.  
  119. /**
  120. * 检验access_token是否有效
  121. * access_token为网页授权接口凭证
  122. * openid为用户ID
  123. */
  124. function check_access_token( $access_token , $openid ) {
  125. $url = "https://api.weixin.qq.com/sns/auth?access_token=". $access_token ."&openid=". $openid ;
  126. $output = https_request( $url );
  127. $jsoninfo = json_decode($output, true);
  128. if( $jsoninfo['errcode'] == ) {
  129. return true;
  130. } else {
  131. return false;
  132. }
  133. }
  134.  
  135. //=======================================================================================================================================
  136.  
  137. /**
  138. * 数据请求
  139. * @return string $output 返回的数据,未解码
  140. */
  141. function https_request($url, $data = null){
  142. $curl = curl_init();
  143. curl_setopt($curl, CURLOPT_URL, $url);
  144. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  145. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  146. if (!empty($data)){
  147. curl_setopt($curl, CURLOPT_POST, );
  148. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  149. }
  150. curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
  151. $output = curl_exec($curl);
  152. curl_close($curl);
  153. return $output;
  154. }
  155.  
  156. //=======================================================================================================================================
  157.  
  158. /**
  159. * 此接口唯一凭证access_token为基础凭证
  160. * 返回的信息全面
  161. */
  162. function get_user_info( $access_token, $openid ) {
  163. $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=". $access_token ."&openid=". $openid ."&lang=zh_CN";
  164. $output = https_request( $url );
  165. $jsoninfo = json_decode($output, true);
  166. return jsoninfo;
  167. }
  168.  
  169. //========================================================================================================================================
  170.  
  171. /**
  172. * 此接口为用公众号接口唯一凭证access_token和用户openid获取用户信息,包括订阅、头像、昵称等详细信息
  173. * @param string $access_token :公众号接口唯一凭证
  174. * @param string $openid :用户openid
  175. * @return array :用户详细信息
  176. */
  177. function get_user_if( $access_token, $openid ) {
  178. $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=". $access_token ."&openid=" . $openid . "&lang=zh_CN";
  179. $output = https_request( $url );
  180. $jsoninfo = json_decode($output, true);
  181. return $jsoninfo;
  182. }
  183.  
  184. //========================================================================================================================================
  185.  
  186. /**
  187. * 菜单类处理 (***未完善***)
  188. * @param access_token:公众号基础接口
  189. * @param action:操作:0:创建;1:查询;2:删除;3:获取菜单配置接口
  190. * @param data:菜单处理json数据
  191. * @return info:处理结果
  192. */
  193. function menu_handle( $access_token, $action, $data ) {
  194. switch ($action) {
  195. case :
  196. $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $access_token;
  197. //post方式提交
  198. $ch = curl_init();
  199. curl_setopt($ch, CURLOPT_URL, $url);
  200. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  201. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  202. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  203. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  204. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, );
  205. curl_setopt($ch, CURLOPT_AUTOREFERER, );
  206. //带上数据
  207. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  208. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  209. //反馈数据
  210. $info = curl_exec($ch);
  211. if (curl_errno($ch)) {
  212. echo 'Errno'.curl_error($ch);
  213. }
  214. curl_close($ch);
  215. break;
  216. case :
  217. $url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $access_token;
  218. $info = https_request( $url );
  219. break;
  220. case :
  221. $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $access_token;
  222. $info = https_request( $url );
  223. break;
  224. case :
  225. $url = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $access_token;
  226. $info = https_request( $url );
  227. break;
  228. }
  229. return $info;
  230.  
  231. }

php获取微信用户信息(没测试过)的更多相关文章

  1. python flask获取微信用户信息报404,nginx问题

    在学习flask与微信公众号时问题,发现测试自动回复/wechat8008时正常,而测试获取微信用户信息/wechat8008/index时出现404.查询资料后收发是nginx配置问题. 在loca ...

  2. SpringBoot中获取微信用户信息从未如此简单!

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  3. java、JavaScript获取微信用户信息登录优化方案

    1.获取微信用户信息要调用微信的好几个接口,再加上自己系统的接口就会变的很慢,影响用户体验,之前走过的弯路我就不赘述了,直接说新的方案. 2.第一步都是向微信发起获取用户code请求: 请求接口:ht ...

  4. Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

    使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根 ...

  5. 小白学react之网页获取微信用户信息

    通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...

  6. python flask获取微信用户信息流程

    需要了解的几个url 用户第一次访问时的url,包含以下几个参数 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID& ...

  7. Java 微信登录授权后获取微信用户信息昵称乱码问题解决

    String getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_toke ...

  8. Java微信公众平台开发(十二)--微信用户信息的获取

    转自:http://www.cuiyongzhi.com/post/56.html 前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信 ...

  9. Java微信公众平台开发(十)--微信用户信息的获取

    前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关 ...

随机推荐

  1. C++基本规则

    C++ 程序结构 让我们看一段简单的代码,可以输出单词 Hello World. #include <iostream> using namespace std; // main() 是程 ...

  2. Linux 期中架构 SSH

    为其他网络服务提供安全协议.替代Telnet SSH:   实现数据加密传输 22  默认支持root用户远程连接 类似sftp-server服务 nmap -p 22 10.0.0.41 nc 10 ...

  3. Ubuntu12.10下Vsftpd的安装

    安装Vsftpd sudo apt-get install vsftpd 配置 sudo vim /etc/vsftpd.conf 取消以下两行前面的注释 local_enable=YES write ...

  4. 第3章 文件I/O(4)_dup、dup2、fcntl和ioctl函数

    5. 其它I/O系统调用 (1)dup和dup2函数 头文件 #include<unistd.h> 函数 int dup(int oldfd); int dup2(int oldfd, i ...

  5. unity3d工程下的data file作用

    projectData文件夹中的data file: 1. Player settings – globalgamemanagers and globalgamemanagers.assets fil ...

  6. 通过yum升级gcc/g++至版本4.8.2

    最近在坐一个日期处理的问题,需要安装sxtwl模块,但是gcc版本4.7死活也安装不上,最后测试到只能升级gcc版本到4.8才得以解决 [root@123 bin]# gcc -vUsing buil ...

  7. Python Json序列化与反序列化

    在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...

  8. File处理

    package com.cfets.ts.u.shchgateway.util; import java.io.BufferedInputStream; import java.io.Buffered ...

  9. python内置函数详细介绍

    知识内容: 1.python内置函数简介 2.python内置函数详细介绍 一.python内置函数简介 python中有很多内置函数,实现了一些基本功能,内置函数的官方介绍文档:    https: ...

  10. scrapy与redis分布式组件

    Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础 ...