美文网首页
PHP实现获取微信网页授权,获取用户信息

PHP实现获取微信网页授权,获取用户信息

作者: 东西汉 | 来源:发表于2019-04-15 13:45 被阅读0次
<?php

namespace app\api\controller;

use think\Controller;

class Wechat extends Controller{

    /**
     * 获取用户信息的code
     */
    public function getCode(){
        $app_id = config('app.wechat.app_id');
        $redirect_url = config('app.wechat.redirect_url');
        $redirect_uri = urlencode($redirect_url);
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$app_id&redirect_uri=$redirect_url&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        // halt($redirect_uri);
        return redirect("$url");
    }

    /**
     * 获取access_token
     * 成功   { "access_token":"ACCESS_TOKEN",
                "expires_in":7200,
                "refresh_token":"REFRESH_TOKEN",
                "openid":"OPENID",
                "scope":"SCOPE" }
        失败  {"errcode":40029,"errmsg":"invalid code"}
     */
    public function getAccessToken($app_id, $secret, $code) {

        $url = "https://api.weixin.qq.com/sns/oauth2/access_token";
        $param = "appid=$app_id&secret=$secret&code=$code&grant_type=authorization_code";
        $result = sendCurl($url, $param);
        return $result;
    }

    /**
     * 检验授权凭证(access_token)是否有效
     * 成功   { "errcode":0,"errmsg":"ok"}
     * 失败   { "errcode":40003,"errmsg":"invalid openid"}
     */
    public function checkAccessToken($open_id, $access_token){

        $url = "https://api.weixin.qq.com/sns/auth";
        $param = "access_token=$access_token&openid=open_id";
        $result = sendCurl($url, $param);
        return $result;
    }

    /**
     * 刷新token
     * refresh_token有效期为30天
     * 成功   { "access_token":"ACCESS_TOKEN",
                "expires_in":7200,
                "refresh_token":"REFRESH_TOKEN",
                "openid":"OPENID",
                "scope":"SCOPE" }
     */
    public function refreshToken($app_id, $refesh_token){

        $url = "https://api.weixin.qq.com/sns/oauth2/refresh_token";
        $param = "appid=$app_id&grant_type=refresh_token&refresh_token=$refesh_token";
        $result = sendCurl($url, $param);
        return $result;
    }

    /**
     * 微信获取用户基本信息(UnionID机制)
     *
     * 成功   { "openid":" OPENID",
                "nickname": NICKNAME,
                "sex":"1",
                "province":"PROVINCE"
                "city":"CITY",
                "country":"COUNTRY",
                "headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqe/46",
                "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
                "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
            }
     */
    public function getUserinfo($open_id, $access_token) {
        if ($access_token && $open_id) {
            $url = "https://api.weixin.qq.com/sns/userinfo";
            $param = "access_token=$access_token&openid=$open_id&lang=zh_CN";
            $userinfo = sendCurl($url, $param);
            return $userinfo;
        } else {
            return array("code" => "userinfo_null");
        }
    }

}



相关文章

网友评论

      本文标题:PHP实现获取微信网页授权,获取用户信息

      本文链接:https://www.haomeiwen.com/subject/nwduwqtx.html