• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现网站应用微信登录功能详解

    本文实例讲述了PHP实现网站应用微信登录功能。分享给大家供大家参考,具体如下:

    背景

    一、开发须知

    1.概念区分

    • 在关注者与公众号产生消息交互后,公众号可获得关注者的 OpenID(加密后的微信号,每个用户对每个公众号的 OpenID 是唯一的。对于不同公众号,同一用户的 OpenID 不同)。
    • 公众号可通过相应接口来根据 OpenID 获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
    • 请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用 UnionID 机制来满足上述需求。
    • OpenID 是普通用户的标识,对当前开发者帐号唯一。一个 OpenID 对应一个公众号。
    • UnionID 是用户统一标识。针对一个 微信开放平台帐号 下的应用,同一用户的 UnionID 是唯一的。

    2.归纳整理

    3.典型问题

    所以:当你出现这种情况,可以参考下面的指导进行 unionID 数据的后期获取 获取用户基本信息(UnionID机制)

      /**
       * 根据用户已获得的 openID 获取其他信息 (主要为 unionID)
       */
      public function getUnionidByOpenid($openID = ''){
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="
          .$this->getaccesstoken()
          ."openid=".$openID."lang=zh_CN";
        $jsonRes = $this->http_get($url);
        if ($jsonRes){
          $arrRes = json_decode($jsonRes, true);
          return $arrRes['unionid'];
        }else{
          return '';
        }
      }

    二、微信开放平台操作

    1.简要引导

    2.官方提供的场景参考

    3.绑定公众账号/小程序

    为了保证同一个开发账号下对应微信用户的 UnionID 绑定使用,需要在下面的列表中绑定对应的公众号/服务号,文档中介绍一般要满足微信支付功能

    4.授权获取 access_token 时序图

    三、代码实现

    1、公共文件配置

    'WEIXIN_LOGIN' => array(
        // 微信开放平台 使用微信帐号登录App或者网站 配置信息
        'OPEN_APPID' => 'wxbd961b2a6b7b2963', //应用 AppID
        'OPEN_APPSECRET' => 'e6xxxxxxxxxxxxxxxxxxxxe90',//应用 AppSecret
        'OPEN_CALLBACKURL' => 'http://www.52zhenmi.com/Home/Login/wxBack', //微信用户使用微信扫描二维码并且确认登录后,PC端跳转路径
      ),

    2.核心代码

    public function wxIndex(){
        //--微信登录-----生成唯一随机串防CSRF攻击
        $state = md5(uniqid(rand(), TRUE));
        $_SESSION["wx_state"]  =  $state; //存到SESSION
        $callback = urlencode($this->callBackUrl);
        'https://https://blog.csdn.net/u011415782/article/details/open.weixin.qq.com/connect/qrconnect?appid=APPIDredirect_uri=REDIRECT_URIresponse_type=codescope=SCOPEstate=STATE#wechat_redirect';
        $wxurl = "https://https://blog.csdn.net/u011415782/article/details/open.weixin.qq.com/connect/qrconnect?appid="
            .$this->appID."redirect_uri="
            .$callback."response_type=codescope=snsapi_loginstate="
            .$state."#wechat_redirect";
        header("Location: $wxurl");
      }
    
      public function wxBack(){
        if($_GET['state']!=$_SESSION["wx_state"]){
          echo 'sorry,网络请求失败...';
          exit("5001");
        }
        $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appID.'secret='.$this->appSecret.'code='.$_GET['code'].'grant_type=authorization_code';
        $arr = curl_get_contents($url);
        //得到 access_token 与 openid
        $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'openid='.$arr['openid'].'lang=zh_CN';
        $user_info = curl_get_contents($url);
        $this->dealWithWxLogin($user_info);
      }
    
      /**
       * 根据微信授权用户的信息 进行下一步的梳理
       * @param $user_info
       */
      public function dealWithWxLogin($user_info){
        //TODO 数据处理
        var_dump($user_info);
        die;
      }

    3.前端显示

    四、总结

    • 1.根据上面功能实现的最后,可以获取登录用户的信息,而其中的 openIDUnionID 可存储数据库进行后期业务的处理.
    • 2.在下阐述能力有限,建议多参考官方开发文档,谷歌前辈的干货经验…

    附录

    • 源代码参考

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
    • php的laravel框架快速集成微信登录的方法
    • php微信授权登录实例讲解
    上一篇:微信公众号用户与网站用户的绑定解决方案分析
    下一篇:PHP生成随机码的思路与方法实例探索
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    PHP实现网站应用微信登录功能详解 PHP,实现,网站,应用,微信,