当前位置: 首页 > news >正文

微信公众平台网页获取用户OpenID方法

下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.
用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息。
具体方法
1、配置网页授权回调域名,如 www.xxx.com

2、模拟公众号的第三方网页,http: // www.xxx.com/getcodeurl.php
 
<?php  
      
    if(isset($_SESSION['user'])){  
        print_r($_SESSION['user']);
    exit;
    }
    $APPID='公众号在微信的appid';
    $REDIRECT_URI='http://www.xxx.com/callback.php';

    $state = 'init';//自定义参数 

    $scope='snsapi_base';
    //$scope='snsapi_userinfo';//需要授权
    $url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect';
    
    header("Location:".$url);
?>

  

3、第三方网页的回跳url中,首先从请求中取得code,然后根据code进一步换取openid和access_token,然后就可以根据openid和access_token调用微信的相关接口查询用户信息了。

    <?php
    //http://www.xxx.com/callback.php
      
    $appid = "公众号在微信的appid";  
    $secret = "公众号在微信的app secret";  
    $code = $_GET["code"];  
    $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';

    $res = httpRequest($get_token_url); 

    $json_obj = json_decode($res,true);  
      
    //根据openid和access_token查询用户信息  
    $access_token = $json_obj['access_token'];  
    $openid = $json_obj['openid'];  
    $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';  
      

    $res = httpRequest($get_user_info_url);     
    //解析json  
    $user_obj = json_decode($res,true);  
    $_SESSION['user'] = $user_obj;  
    print_r($user_obj);  
      
    function httpRequest($url, $data=null){

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,false);  //1:回复内容 0:输出内容
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false); 
 
    if (!empty($data)) {
      curl_setopt($curl, CURLOPT_POST, 1); //模拟post方式
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //执行事务
    $output = curl_exec($curl);
    //关闭
    curl_close($curl);
    //输出内容
    return $output;
  }
?>  

  

转载于:https://www.cnblogs.com/qhorse/p/4627639.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Innodb行锁源码学习(一)
  • 我所了解的JavaScript糟粕和鸡肋
  • 得到的并不一定就值得庆幸,失去的也并不完全是坏事情
  • [转]iOS 应用程序的生命周期
  • javascript中==的数据类型转换规则
  • 深入了解java同步、锁紧机构
  • 自己的自定义单元格(IOS)
  • 第一部分:HTTP协议之请求和响应
  • 移动开发下Xamarin VS PhoneGap
  • c++中new分配动态数组
  • U盘安装ubuntu server 14.04
  • 【iOS】FMDB封装,查询自动mapping
  • idea创建maven-archetype-webapp项目无java目录
  • JavaScript入门篇 第三天(认识DOM)
  • 观察者模式详解
  • [case10]使用RSQL实现端到端的动态查询
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 30秒的PHP代码片段(1)数组 - Array
  • canvas 五子棋游戏
  • leetcode98. Validate Binary Search Tree
  • Swoft 源码剖析 - 代码自动更新机制
  • Zepto.js源码学习之二
  • 百度小程序遇到的问题
  • 精彩代码 vue.js
  • 驱动程序原理
  • 如何在 Tornado 中实现 Middleware
  • 使用parted解决大于2T的磁盘分区
  • ​浅谈 Linux 中的 core dump 分析方法
  • # 数仓建模:如何构建主题宽表模型?
  • (52)只出现一次的数字III
  • (7)摄像机和云台
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (转)为C# Windows服务添加安装程序
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NetCore项目nginx发布
  • @Async注解的坑,小心
  • @selector(..)警告提示
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
  • [AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能
  • [BUUCTF 2018]Online Tool
  • [C#学习笔记]Newtonsoft.Json
  • [C和指针].(美)Kenneth.A.Reek(ED2000.COM)pdf
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [Golang] goroutine
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [jobdu]不用加减乘除做加法
  • [JS] node.js 入门
  • [k8s系列]:kubernetes·概念入门