首页 > 其他分享 >微信公众号开发获取openid和用户信息的步骤

微信公众号开发获取openid和用户信息的步骤

时间:2023-08-18 10:46:00浏览次数:27  
标签:openid 71 步骤 oXn8b1Advze2dIzcdY0 微信 print oNglrtwW9aQQQJ4kLaIsqOPZm39g

<?php

define("APPID", 'wxe147d9e245s9e343');
define("APP_SECRET", 'eb5ba07fee64we7uc5f0533cd11a6732');

header("Content-type: text/html; charset=utf-8");
session_start();

if (!isset($_GET['code'])) {
    // 回跳地址需要在微信公众号后台绑定,域名需要先备案
    $REDIRECT_URI = 'http://wx.myshop.com/wx_gzh_userinfo.php';
    $scope = 'snsapi_base'; //snsapi_base 或 snsapi_userinfo
    $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . APPID . '&redirect_uri=' . urlencode($REDIRECT_URI) . '&response_type=code&scope=' . $scope . '&state=wx' . '#wechat_redirect';
    header("Location:" . $url);
} else {

    $code = $_GET["code"];
    $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . APPID . '&secret=' . APP_SECRET . '&code=' . $code . '&grant_type=authorization_code';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $get_token_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $res = curl_exec($ch);
    curl_close($ch);
    echo 'res=';
    print_r($res);
    $json_obj = json_decode($res, true);

    //根据openid和access_token查询用户信息,一般来说当openid在本网站数据库中不存在的时候才需要这样做
    $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';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $get_user_info_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $res2 = curl_exec($ch);
    curl_close($ch);
    echo 'res2=';
    print_r($res2);
    //解析json
    $user_obj = json_decode($res2, true);
    $_SESSION['user'] = $user_obj;
    //print_r($user_obj);
    // print_r($user_obj);
    print_r("<br><br>");
    // print_r($get_user_info_url);
    // print_r("<br><br>");
    // print_r($openid);
    // return json_decode($openid);
    print_r($openid);
    // 最终结果
    /**
    res=
    {
        "access_token": "71_ilcxFIDf1zVpfOxABW_zEoJzxNO023S9UOQBfURQfZ5I6AgizJec8FQ5B86xJBb-1K135D1YfMyO6bgAmCp90OHGlYw_nuikqfulO9uIHxg",
        "expires_in": 7200,
        "refresh_token": "71_6HC0VxhT2LoOWUWUCc2-vG5z-6JZNR14ZULpMReqwwCpNOdRwdzvIGqpjFfbzpYtNl13t0QtIDG9onoLTiVI-a-SgFGoQbNhDFuYuBmA3dM",
        "openid": "oNglrtwW9aQQQJ4kLaIsqOPZm39g",
        "scope": "snsapi_userinfo",
        "unionid": "oXn8b1Advze2dIzcdY0_Efko25rs"
    }
    res2=
    {
        "openid": "oNglrtwW9aQQQJ4kLaIsqOPZm39g",
        "nickname": "闪电",
        "sex": 0,
        "language": "",
        "city": "",
        "province": "",
        "country": "",
        "headimgurl": "https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJWVUzX3FnFxMcP8mqXrJZJ3bRG2OyauTr845kfR7q2bW1CLibiauuPAyV8QkqH8dyKP1l50ib2gyzvA\/132",
        "privilege": [],
        "unionid": "oXn8b1Advze2dIzcdY0_Efko25rs"
    }
    oNglrtwW9aQQQJ4kLaIsqOPZm39g
    */
}

  

标签:openid,71,步骤,oXn8b1Advze2dIzcdY0,微信,print,oNglrtwW9aQQQJ4kLaIsqOPZm39g
From: https://www.cnblogs.com/tochw/p/17639765.html

相关文章

  • 使用GEWE框架完成微信机器人的开发 (登录模块)
    友情链接 geweapi.com点击即可访问  创建新设备简要描述:微信首次登录时需要先调用本接口创建设备,后续再次登录则直接使用之前创建的设备ID调用获取登录二维码接口登录即可。同一个号避免频繁创建新设备登陆,容易触发风控请求URL:http://域名地址/api/login/createapp请求方式:POS......
  • CentOS7下部署Django项目详细操作步骤
    部署是基于:centos7+nginx+uwsgi+python3+django之上做的软件版本详细介绍,纯净操作系统:Centos7.0 Python版本:python3.6Django版本:django2.0.6本文包括以下几个部分内容:㈠、服务器环境部署详细步骤㈡、本地项目搬迁到服务器㈢、Django后台样式丢失解决办法㈣、Django开启S......
  • 一次完整的HTTP请求所经历的7个步骤
    一次完整的HTTP请求所经历的7个步骤HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:1.建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP......
  • 微信小程序:环形进度条模块
    利用canvas实现微信小程序环形进度条模块。模块下载链接:下载链接最近开发一款背单词的微信小程序,计划使用环形进度条展示每日背单词进度。效果图如下(可渐变颜色):开发步骤1、在根目录创建名为components的文件夹,用来放需要引用的自定义组件。2、创建名为circle的文件夹,用来放......
  • 微信小程序:横向滚动卡片列表模板
    1前言在开发微信小程序时,横向可滚动卡片列表是一个必不可缺的页面组件。其不仅美观还可以节省屏幕空间。具体截图如下:2代码详解主要用的是scroll-x,具体代码如下:wxml<scroll-viewscroll-xclass="scroll-x"><viewstyle="display:inline-block;"class="act"bindtap=......
  • 微信小程序:伪装页面达到定时改变页面内容的目标
    Step1:在app.js中,导入util包用于获取时间varutil=require('/utils/util.js')Step2:在app.js中,将onLaunch函数加入以下内容:onLaunch:function(){vartime='2022/05/2213:00:00'//这个时间是预计审核通过后的时间vart=util.formatTime(newDate());thi......
  • 微信小程序:自动生成打卡海报
    完整项目下载:下载链接1前言在当前的背单词小程序开发中,为满足用户学习完成后的展示需求,计划引入自动生成打卡海报功能,以提升用户参与度与推广效果。除了基本的海报生成功能,还可以考虑以下丰富内容:将用户的学习数据融入海报,展示用户的学习时长、单词掌握率等统计信息,让用户......
  • 微信小程序:发布动态页面模板
    1前言由于功能需求,需要在小程序中开发社区打卡模块。打卡模块中上传发布的界面是必不可少的。于是利用flex布局设计了上传动态的页面。页面截图如下:由于是模板分享,这里也不做过多介绍了,通过代码来说明吧。页面主要有四个文件,分别是create.js、create.json、create.wxml、cre......
  • 微信开发之一键删除好友的技术实现
    简要描述:删除联系人请求URL:http://域名地址/delContact请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String微信实列IDwcId是String需删除的微信id返回数据:参数名类型说明codestring1000成功,1001失败msgstring反馈......
  • 微信开发之一键删除好友的技术实现
    简要描述:删除联系人请求URL:http://域名地址/delContact请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String微信实列IDwcId是String需删除的微信id返回数据:参数名类型说......