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

时间:2024-03-13 11:06:35

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

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

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

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

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

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

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

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

    "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跳转

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

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

[php] view plain copy
  1. /** 
  2. * @desc 向微信接口发送请求 
  3. **/  
  4. function getJson($url){  
  5.     $ch = curl_init();  
  6.     curl_setopt($ch, CURLOPT_URL, $url);  
  7.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);   
  8.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);   
  9.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  10.     $output = curl_exec($ch);  
  11.     curl_close($ch);  
  12.     return json_decode($output, true);  
  13. }  

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

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

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

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

①判断是否有$_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跳转微信公众号开发--获取网页授权并自定义菜单点击获得openid跳转