1. 首页>>开发笔记

关于微信公众登录授权及多域名回调

最近搞几个小H5项目涉及多个应用同时使用微信公众号登录,然鹅服务号只有一个,需要突破服务好回调2个域名的限制,百度搜索一番发现一款可公众号登录授权的多域名回调系统,记录一下公众号授权登录及多域名的使用方法:

公众号授权登录,看文档《公众号登录网页授权》有两种授权方式静默获取snsapi_basesnsapi_userinfo,如果只需要获取用户openid直接用第一种方式,其它用第二种方式,如果使用多域回调系统则需要替换第一步的获取code的url其它和官方一致。下面是静默获取的示例代码

<?php
// 公众号的id和secret
$appid = '服务号appid';
$appsecret = '服务号秘钥';
$url = urlencode("http://".$_SERVER['HTTP_HOST']."/实际业务路径");

//第一步获取code,这里需要主要多域名系统需要替换https://open.weixin.qq.com/connect/oauth2/authorize,其它接口不变
if(!isset($_GET@['code'])){
$tourl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$url.'&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
header('Location:'.$tourl);
}else{

//第二步获取access_token及静默方式时(snsapi_base)用户openid ,https://api.weixin.qq.com/sns/oauth2/access_token
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$_GET@['code']."&grant_type=authorization_code";
$curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
      if (!empty($data)){
       curl_setopt($curl, CURLOPT_POST, 1);
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
      }
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      $output = curl_exec($curl);
      curl_close($curl);
      $res=json_decode($output, true);
      echo $res['openid'];
}
?>


多域名系统只需要修改获取code的方式其它按照官方即可,微信官方只是在获取code的回调域上做了限制其他没有做限制。

snsapi_userinfo方式是在这个基础上多一步通过access_token拉取用信息,不管是官方还是多系统回调都按官方文档及接口获取,看业务需求是是否需要用到access_token刷新如果需要请保存access_token不需要则不需要保存。另外要强调的是这个access_token和多域名系统获取的access_token没关系、没关系、没关系,切记。




如无特别说明,文章均为本站原创。转载请注明出处:http://www.pddo.cn/phper/394.html

发表评论

点击我更换图片

评论列表

联系我们

在线咨询:点击这里给我发消息

微信号:cjpay01

工作日:9:30-18:30,节假日休息