简单的微信之第三方登录

35 篇文章 2 订阅

先看图解

(qq和微信都一样啦)
img

数据库设计

用户基础表(users)
img
用户验证关联表(user_auth_rel)
img
本地用户表(user_local_auth)
img

第三方用户表(user_third_auth)
img
第三方登陆主要是基于OAuth2.0协议来实现

1、首先我们需要以开发者的身份向第三方登陆平台申请接入应用,申请成功后,我会获得一个applD和一个secrectlD.
2、当我们的网站需接入第三方登陆时,会引导用户跳转到第三方的登陆授权页面,此时把之前申请的applD和secrectID带给登陆授权页面。
3、用户登陆成功后即得到授权,第三方会返回一个临时的code给我们的网站。
4、我们的网站接受到code后,再次向我们的第三方发起请求,并携带接收的code,从第三方获取access token.

5、第三方处理请求后,会返回一个access token给我们的网站,我们的网站获取到access token后就可以调用第三方提供的接口了,比如获取用户信息等。最后把该用户信息存入到我们站点的数据库,并把信息保存到session中,实现用户的第三方登陆。

顺带这微信授权登录

需要在微信中先获取code

        wx.login({
              timeout: 2000,
              success: (result) => {
                let code=result.code
                // console.log(code);
                // return
                wx.request({
                  url: 'http://www.lzk5.7.com/index.php/api/admin_login', //仅为示例,并非真实的接口地址
                  data: {
                   code:code
                  },
                  header: {
                    'content-type': 'application/json' // 默认值
                  },
                  success (res) {
                    let openid=res.data.openid;
                    wx.setStorageSync('openid',openid)
                    let openid0=wx.getStorageSync('openid')
                    console.log(openid0)
                  }
                })
              },
            })

后台获取

// 小程序登录
    public function wxlogin(Request $request) {
        // 此2个值是小程序后台提供
        $appid = '###############';
        $secret = '###############';
        // 小程序传过来的
        $code = $request->get('code');
        // 请求地址
        $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code';
        $url = sprintf($url, $appid, $secret, $code);


        // 申请请求客户端  verify 不检查证书ssl
        $client = new Client(['timeout' => 5, 'verify' => false]);
        $response = $client->get($url);
        $json = (string)$response->getBody();
        // json转为数组
        $arr = json_decode($json, true);
        // 写入到数据表中
        try {
            Renting::create(['openid' => $arr['openid']]);
        } catch (\Exception $exception) {
        }
        return $json;
    }

文档链接:
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值