微信开放平台网站应用扫码登录

微信开放平台网站应用扫码登录<?phpnamespaceapp\common\wechat;/***微信开放平台*Date:2020/9/080015*Time:上午10:03*/classWXOpenPlatform{privatestatic$appId=’xxxxxxxxxxxxxxxxxxxxxxxxx’;privatestatic$appSecret=’xxxxxxxxxxxxxxxxxxxxxxxxx’;privatestati.

大家好,又见面了,我是你们的朋友全栈君。

<?php
namespace app\common\wechat;
/**
 * 微信开放平台
 * Date: 2020/9/08 0015
 * Time: 上午 10:03
 */
class WXOpenPlatform{
    private static $appId = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
    private static $appSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
    private static $scope = 'snsapi_login';

    /**
     * curl请求
     * @param $url
     * @return mixed
     */
    public static function https_request($url, $data = null) {
        $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);
        return $output;
    }

    /**
     * 第一步:用户同意授权,获取code
     * @param $redirect_uri
     * @param int $state
     * @return string
     */
    public static function getCode($redirect_uri, $state = 1){
        $redirect_uri = urlencode($redirect_uri);     //用urlEncode对链接进行处理
        $code_url = 'https://open.weixin.qq.com/connect/qrconnect?appid='.self::$appId.'&redirect_uri='.$redirect_uri.'&response_type=code&scope='.self::$scope.'&state='.$state.'#wechat_redirect';
        return $code_url;
    }

    /**
     * 第二步:通过code换取网页授权access_token
     * 正常结果:return { "access_token":"ACCESS_TOKEN",
     *          "expires_in":7200,
     *          "refresh_token":"REFRESH_TOKEN",
     *          "openid":"OPENID",
     *          "scope":"SCOPE" }
     * 错误是的结构:{"errcode":40029,"errmsg":"invalid code"}
     */
    public static function getAccessToken($code){
        //从微信接口获取
        $accessTokenApi = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.self::$appId.'&secret='.self::$appSecret.'&code='.$code.'&grant_type=authorization_code';
        $res = self::https_request($accessTokenApi);
        $result = json_decode($res, true);
        return $result;
    }


    /**
     * 第三步:刷新access_token(如果需要)
     * 正常结果:return { "access_token":"ACCESS_TOKEN",
     *          "expires_in":7200,
     *          "refresh_token":"REFRESH_TOKEN",
     *          "openid":"OPENID",
     *          "scope":"SCOPE" }
     * 错误是返回结果:{"errcode":40029,"errmsg":"invalid code"}
     */
    public static function refreshAccessToken($refreshToken){
        $refreshAccessTokenApi = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.self::$appId.'&grant_type=refresh_token&refresh_token='.$refreshToken;
        $res = self::https_request($refreshAccessTokenApi);
        $result = json_decode($res, true);
        return $result;
    }
    /**
     * 第四步:拉取用户信息
     * 正常返回结果:{"openid":" OPENID",
     *               "nickname": NICKNAME,
     *               "sex":"1",
     *               "province":"PROVINCE"
 *                   "city":"CITY",
     *               "country":"COUNTRY",
     *               "headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ
     *                              4eMsv84eavHiaiceqxibJxCfHe/46",
     *               "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
     *               "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
     *              }
     * 错误时返回结果:{"errcode":40003,"errmsg":" invalid openid "}
     */
    public static function getUserInfo($openId,$accessToken){
        $userInfoApi = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$accessToken.'&openid='.$openId.'&lang=zh_CN';
        $res = self::https_request($userInfoApi);
        $result = json_decode($res, true);
        return $result;
    }
    /**
     * 附:检验授权凭证(access_token)是否有效
     * 正确的JSON返回结果:
     * { "errcode":0,"errmsg":"ok"}
     * 错误时的JSON返回示例:
     * { "errcode":40003,"errmsg":"invalid openid"}
     */
    public static function checkAccessToken($openId,$accessToken){
        $checkAccessTokenUrl = 'https://api.weixin.qq.com/sns/auth?access_token='.$accessToken.'&openid='.$openId;
        $res = self::https_request($checkAccessTokenUrl);
        $result = json_decode($res, true);
        return $result;
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141030.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月26日 下午6:40
下一篇 2022年5月26日 下午6:40


相关推荐

  • 代码主题darcula_Intellij idea 中的Darcula主题怎么把颜色改回来?

    代码主题darcula_Intellij idea 中的Darcula主题怎么把颜色改回来?展开全部1、打开IDEA,点击File>Settings…2、直接搜索Color,点击Colorscheme。3、右侧Scheme下拉选择62616964757a686964616fe4b893e5b19e31333431356666,Darcula黑色主题。4、点击Apply应用,ok确认退出。完成。扩展资料:快捷键1、写代码时用Alt-Insert(Code|Generate…)…

    2022年6月27日
    76
  • 科大讯飞(002230):星火大模型持续升级 AI赋能多领域应用突破

    科大讯飞(002230):星火大模型持续升级 AI赋能多领域应用突破

    2026年3月14日
    2
  • ModelSimSE_10.2c破解

    ModelSimSE_10.2c破解我开始也是找的网上破解crack,但是生成license后打开软件提示:modelsim打开时候出现提示:“unabletocheckoutaviewerlicensenecessaryforuseofthemodelsimgraphicaluserinterface.Vsimisclosing”。说明license还是有问题;按照破解说明,需要pat…

    2022年5月22日
    35
  • url的加密解密_url地址加密

    url的加密解密_url地址加密今天做项目构造链接参数的时候,推送到app上的链接点了没办法跳转到对应的界面对比了一下能跳转的链接,原来是url没有加密,就推送过去了在这里把对url加密解密的方法记录一下,方便以后使用publicstaticStringgetURLEncoderString(Stringstr){Stringresult="";if(null==str){…

    2025年7月2日
    6
  • MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]

    MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]部署环境:安装版本redhatCent7.0MYSQL版本8.0.2.0成功部署完毕后出现故障情况:1.正常启动MYSQL服务后,敲Linux中root账户和密码进入不去。2.从/etc/my.cnf配置文件中加入skip-grant-table后正常登陆,但是不能创建用户等多操作总结来说:想进去mysql后不能操作多指令,操作多指令又不能进去mysql,死…

    2022年5月6日
    97
  • CSS3设置按钮的样式

    CSS3设置按钮的样式平面按钮样式 现主流在实际开发中 按钮的应用是必不可少使用 CSS 来制作按钮 可以更有新意 更有趣 也可以自定义自己想要的样式平面样式按钮的使用现在非常流行 并且符合无处不在的平面设计趋势实现方式 button background color 4CAF50 Green border none color white padding 15px32px text align center text dec

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号