PHP实现微信登录

来自AI助手的总结
这段文章主要介绍了微信登录的逻辑,包括获取code和通过code获取openid的方法。

登录逻辑

1. 微信访问网址

2. 第一次跳转到获取code方法

3. 第二次跳转传入code获取openid,通过openid处理微信登录

4. 跳到登录成功页面,或者绑定页面

获取code逻辑

1565853338177971.png

代码

// 获取code的
public function wechatLogin(){
    $code = input('code');
 
    // 如果cookie缓存里面已经保存着openid,则不会再次获取新的openid
    if (empty($code)) {
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        header('Location:https://统一获取code的域名/api/wechat/getCode/?url='.$url);
        exit;
    
    }else{
        // 防止刷新时导致重复带入过期code导致获取openid错误
        $options = array (
            'appid' => 'xxx', // 填写高级调用功能的appid
            'appsecret' => 'xxx' // 填写高级调用功能的密钥
        );
        $wechat = new WechatApi($options);
        $result = $wechat->getOauthAccessToken($code);
        // access_token,expires_in,refresh_token,openid,scope
    }
}

上面跳转获取code的代码

// 获取code
public function getCode(){
    ob_start();
    $myurl = Request::param('url');
    $options = array (
        'token' => '', // 填写你设定的key
        'appid' => '', // 填写高级调用功能的appid
        'appsecret' => '' // 填写高级调用功能的密钥
    );

    $wechat = new WechatApi($options);
    $callback = 'https://域名/oauth.php?url= '.$myurl;
    $url = $wechat->getOauthRedirect($callback,$state='',$scope='snsapi_base');
    header("Location:".$url);
    exit;
}

oauth.php




授权页面跳转中




这里有上面代码所需要的类

点击这里查看 WechatApi类

可以用微信打开以下地址查看演示

https://www.liqingbo.cn/apis/wechat/wechatlogin

温馨提示: 本文最后更新于2025-03-02 00:06:04,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 蚂蚁官方
© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容