资讯专栏INFORMATION COLUMN

获取微信用户基本信息

jeyhan / 1134人阅读

摘要:引入封装的类使用接口通过获得触发微信返回码获取码,以获取其实需要一个包,但是我不知道怎么传文件,我只能复制一些能用的函数了作用生成可以获得的作用格式化参数,签名过程需要使用作用设置获取微信用户数据初始化设置超时运行

public function getuserinfo(){
        header("Content-type:text/html;charset=utf-8");
        ini_set("date.timezone", "Asia/Shanghai");
  //引入封装的类
           // import("Common.Lib.WxPayPubHelper.WxPayPubHelper");
            //使用jsapi接口
            //$jsApi = new JsApi_pub();
/*      通过code获得openid*/
            if (!isset($_GET["code"])) {
                //触发微信返回code码
                $url = $this->createOauthUrlForCode("http://" . $_SERVER["HTTP_HOST"] . "/Web/Index/index.html");
                header("Location: $url");
            } else {
                //获取code码,以获取openid
                $code = I("get.code");
                if (!empty($code)) {
                    $this->setCode($code);
                    $result_wechat = $this->getWxInfomation();
                    if ($result_wechat) {
                        if (!M("web_user")->where(array("openid" => $result_wechat["openid"]))->find())
                            M("web_user")->add($result_wechat);
                        cookie("openid", $result_wechat["openid"]);
                        cookie("nickname", $result_wechat["nickname"]);
                        cookie("wechatinfo", $result_wechat);
                    }
                }
            }
}

***

> //其实需要一个包,但是我不知道怎么传文件,我只能复制一些能用的函数了

    /**
         *    作用:生成可以获得code的url
         */
    function createOauthUrlForCode($redirectUrl)
    {
        $urlObj["appid"] = WxPayConf_pub::APPID;
        $urlObj["redirect_uri"] = "$redirectUrl";
        $urlObj["response_type"] = "code";
        $urlObj["scope"] = "snsapi_userinfo";
        $urlObj["state"] = "STATE" . "#wechat_redirect";
        $bizString = $this->formatBizQueryParaMap($urlObj, false);
        return "https://open.weixin.qq.com/connect/oauth2/authorize?" . $bizString;
    }
    
      /**
     *    作用:格式化参数,签名过程需要使用
     */
    function formatBizQueryParaMap($paraMap, $urlencode)
    {
        $buff = "";
        ksort($paraMap);
        foreach ($paraMap as $k => $v) {
            if ($urlencode) {
                $v = urlencode($v);
            }
            //$buff .= strtolower($k) . "=" . $v . "&";
            $buff .= $k . "=" . $v . "&";
        }
        $reqPar;
        if (strlen($buff) > 0) {
            $reqPar = substr($buff, 0, strlen($buff) - 1);
        }
        return $reqPar;
    }
        /**
     *    作用:设置code
     */
    function setCode($code_)
    {
        $this->code = $code_;
    }
    
    
        /**
     * 获取微信用户数据
     * @return mixed
     */
    function getWxInfomation()
    {
        $url = $this->createOauthUrlForOpenid();
        //初始化curl
        $ch = curl_init();
        //设置超时
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        //运行curl,结果以jason形式返回
        $res = curl_exec($ch);
        curl_close($ch);
        //取出openid
        $data = json_decode($res, true);

        if ($data) {
            $url = $this->createOauthUrlForUserInfo($data["access_token"], $data["openid"]);
            //初始化curl
            $ch = curl_init();
            //设置超时
            curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            //运行curl,结果以jason形式返回
            $res = curl_exec($ch);
            curl_close($ch);
            //取出openid
            $data = json_decode($res, true);
            return $data;
        }
    }
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22264.html

相关文章

  • 网站接入微信扫码登录并获取用户基本信息(微信开放平台)

    摘要:现在的网站基本都接入微信登陆了,就好像下面这样的。只需要用微信扫一下二维码,这个网站就可以展示你的微信昵称和头像,免去注册账号和输入密码登录的步骤,还免去设置头像和昵称的步骤,所以是挺方便的。 现在的网站基本都接入微信登陆了,就好像下面这样的。 showImg(https://segmentfault.com/img/bVbc4jV?w=523&h=508); 只需要用微信扫一下二维码...

    tangr206 评论0 收藏0
  • 说说微信扫码登录

    摘要:详情接口我们这里主要讲的是网站应用,网站应用微信登录是基于协议标准构建的微信授权登录系统即上面的协议。在微信客户端授权登录获取用户信息的可以查看。微信授权登录目前支持模式,适用于拥有端的应用授权。 一、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 ...

    Jokcy 评论0 收藏0
  • 微信订阅号通过获取Openid并获取用户基本信息

    摘要:我们知道,服务号有获取用户基本信息的接口,通过网页授权获取的。但是认证的订阅号也有获取用户基本信息的接口了,但是与服务号不同的是,这个需要用户主动触发才可以获得,需要用户发送任意关键词或者点击菜单。那么最后一步,就是获取用户基本信息了。 我们知道,服务号有获取用户基本信息的接口,通过oauth2.0网页授权获取的。但是认证的订阅号也有获取用户基本信息的接口了,但是与服务号不同的是,这个...

    miguel.jiang 评论0 收藏0
  • 微信开放平台扫码登录获取用户基本信息!附可用demo

    摘要:微信开放平台提供了网站扫码登录的接口,用于获取用户基本信息头像,昵称方便网站快速接入微信登录,快捷登录。需要使用登录接口,需要成为微信开放平台认证开发者元才可以获得这个接口权限。 微信开放平台提供了网站扫码登录的接口,用于获取用户基本信息(头像,昵称)方便网站快速接入微信登录,快捷登录。需要使用登录接口,需要成为微信开放平台认证开发者(300元)才可以获得这个接口权限。 准备工作: 1...

    flybywind 评论0 收藏0
  • vue + 微信获取用户信息

    摘要:分享页面的实际链接当前页面的链接需要编码公众号的当前页面的链接,需要编码其他值均不用改动点击允许后跳转的链接是。此处的可以用来调取接口获取微信用户的相关信息每次用户授权带上的将不一样,只能使用一次,分钟未被使用自动过期。 vue + 微信获取用户信息 本次项目做到一个点赞功能,即分享出去一个页面给微信好友,微信好友点开并点赞,需要将点赞用户的微信昵称,微信头像以及微信openid,微信...

    luoyibu 评论0 收藏0
  • vue + 微信获取用户信息

    摘要:分享页面的实际链接当前页面的链接需要编码公众号的当前页面的链接,需要编码其他值均不用改动点击允许后跳转的链接是。此处的可以用来调取接口获取微信用户的相关信息每次用户授权带上的将不一样,只能使用一次,分钟未被使用自动过期。 vue + 微信获取用户信息 本次项目做到一个点赞功能,即分享出去一个页面给微信好友,微信好友点开并点赞,需要将点赞用户的微信昵称,微信头像以及微信openid,微信...

    Corwien 评论0 收藏0

发表评论

0条评论

jeyhan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<