首页 > 其他分享 >微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转

时间:2023-04-06 17:04:25浏览次数:47  
标签:openid ch 网页 自定义 url 跳转 授权 curl com


之前做了个自定义菜单的click事件,但是订阅号升级为服务号,相应的有了网页的基础授权(需要认证的服务号)

其中使用到了自定义菜单接口:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

网页授权获取用户基本信息接口:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信openid

一、在接口处获取网页授权,并填写你的域名或ip(域名不需要协议 http://www.baidu.com而是www.baidu.com)

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信高级接口_02

二、在自定义菜单出的url写入“第一步:用户同意授权,获取code”的url,并将redirect_uri写成你的VIEW时间点击后需要跳转的路径,如下:

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信自定义菜单_03


{



"button": [
        {
            "type": "click",
            "name": "图文获取",
            "key": "图文"
        },
        {
            "type": "view",
            "name": "授权获取",
            "url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0738856156f7323c&redirect_uri=http://www.你的网址.com&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
        }
    ]
}



三、在请求成功后返回code并用来获取openid

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信获取网页授权_04

通过code获取openid的参数如上,即在入口文件中为:

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信自定义菜单_05

/**
    * @desc 向微信接口发送请求
    **/
    function getJson($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output, true);
    }


-------------------------------------------------------------------------------------我是分割线-------------------------------------------------------------------------------------------------

但是有些时候需要页面重定向出下面的效果:

微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转_微信自定义菜单_06

这时候就需要页面重定向:

①判断是否有$_GET['code'],若则将页面重定向到网页授权页面

$now_url ='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];//获取当前url
$judge = preg_match("/stat/" ,$now_url);//正则判断是否网页授权url
if(!$_SESSION['nowUrl'] && !$judge){ //搜索到oauth2这个词不存在时,证明这个url不是经过处理的
    $_SESSION['nowUrl'] = $now_url;  //生成session用于判断
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx50090139912065bd&redirect_uri=http://xxx&response_type=code&scope=snsapi_base&stat";
    header("Location:$url");
}



② 经过①,页面已重定向到网页授权页面,如果你不在微信打开就会出现:请在微信客户端打开链接,如果在微信打开则如下操作:

if($_SESSION['nowUrl']){
    $url = $_SESSION['nowUrl'];
    unset($_SESSION['nowUrl']);
    header("Location:$url");  //销毁session后跳转回去
}



这样我们就做好了微信网页授权(可避免在微信外打开)-\-\




标签:openid,ch,网页,自定义,url,跳转,授权,curl,com
From: https://blog.51cto.com/u_13854513/6173759

相关文章

  • C# List按照自定义的顺序去排序
    有没有遇到过产品经理说表格输出排序要按照指定的人员列表去排序?经过一番研究搜查发现一个方法可以实现话不多说上例子 publicclassUserInfo{publicstringName{get;set;}publicstringInfo{get;set;}} List<UserInfo>userInfos=newList<Use......
  • vue3中路由错误自动跳转404页面 路由表写法
    定义路由表import{createRouter,createWebHashHistory}from"vue-router";constroutes=[ { path:"/", name:"home", component:Home, },//... { path:"/404", name:"404", component:()=&......
  • [K/3Cloud] 首页增加一个自定义页签及页面内容
    在K3Cloud登录后的门户首页增加一个页签,如增加一个【BBS论坛】 2013-7-3011:18:51上传下载附件 (84.81KB) 增加页签   可以这么来做:进入BOSIDE,找到名称为主控台经典版,唯一标识为BOS_MainConsoleSutra的动态表单;为它写一个继承自AbstractDynamicFormPl......
  • Map自定义key,然后把value的集合List进行指定字段排序
    packagecom.zdft.purchase;importcom.google.common.collect.Lists;importjava.util.*;importjava.util.stream.Collectors;publicclassStudentMethod{//需求:Map自定义key,然后把value的集合List进行指定字段排序;例如:多次考试,取最高分的集合展示publics......
  • css自定义复选框和单选框
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title></head><styletype="text/css">*{margin:0;padding:0;box-sizing:border-box;}......
  • 界面控件DevExtreme v23.1抢先体验,增强的UI/UX自定义功能!
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。本文的目的就是为了让开发者预览即将发布的DevExtreme功......
  • uni-app:ios/android中的nvue和vue页面加载自定义字体(hbuilderx 3.7.3)
    一,官方文档地址:https://uniapp.dcloud.net.cn/tutorial/nvue-api.html#addrule二,代码1,nvue页面:模板<viewclass="listTitle">{{item.title}}</view>......
  • 设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC
    1自定义SpringIOC总结1.1使用到的设计模式工厂模式。这个使用工厂模式+配置文件的方式。单例模式。SpringIOC管理的bean对象都是单例的,此处的单例不是通过构造器进行单例的控制的,而是spring框架对每一个bean只创建了一个对象。模板方法模式。AbstractApplicationC......
  • uni-app:tabbar自定义中间凸起按钮的tabbar(hbuilderx 3.7.3)
    一,官方文档地址:https://uniapp.dcloud.net.cn/collocation/pages.html#tabbarhttps://uniapp.dcloud.net.cn/api/ui/tabbar.html#ontabbarmidbuttontap二,代码1,pages.json"tabBar":{"color":"#7A7E83",//字体颜色"sel......
  • shared_ptr 自定义 deleter 删除器
    make_shared不支持自定义删除器shared_ptr<Bar>sp2(sp1,deleter1);无法指定自定义删除器?《C++Primer5th》P413错误?sp1不能是智能指针,可以是内置指针reset参数为内置指针,可以重新指定删除器测试代码classBar{public:Bar(intii):i(ii){cout<<......