微信小程序获取用户唯一标识OpenID

最近想重新熟悉一下微信小程序的开发,所以整理了一下上年毕设的作品-蔚园园子,一个关于校园的综合服务平台。

软件开发第一步大都绕不开登录,微信小程序的登录的话,又稍微麻烦一些。其实微信提供的文档,里面有微信登录流程时序(https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html),按照这个流程走的话,还是比较简单的。

大体思路是用户进入小程序后,通过wx.login获取到用户的临时登录凭证code,在回调方法中调用服务端提供的接口,需要把code带过去。

服务端处理的话,首先是获取客户端传过来的code值,然后调用微信提供的接口:https://api.weixin.qq.com/sns/jscode2session,

最后就能拿到当前用户的OpenID的值,和其它相关信息。

在这里插入图片描述
下面是小程序和和服务端(PHP)代码:
在这里插入图片描述

客户端:

      /*
       * 获取临时登录凭证code,调用登录接口
       */
      wx.login({
        success(res) {
          if (res.code) {
            //发起网络请求
            wx.request({
              url: 'wx-login',
              method: 'GET',
              data: {
                code: res.code
              },
              success(res) {
                console.log(res)
              }
            })
          } else {
            console.log('登录失败!' + res.errMsg)
          }
        }
      })
    }
    

服务端:


	const APP_ID       = 'wx9eef2eabcbbc999d';                           // 小程序 appId
    const APP_SECRET   = '01c10cd28040f7360cf675b9c3d18eb4';             // 小程序 appSecret
    const GRANT_TYPE   = 'authorization_code';                           // 登录时获取的 code
    const WX_LOGIN_URL = 'https://api.weixin.qq.com/sns/jscode2session'; // 授权类型,此处只需填写 authorization_code

    /**
     *  微信小程序授权登录
     * @param \think\Request $request
     */
	public function wxLogin(Request $request)
	{
	    // 临时登录凭证code
        $code= $request->get('code');

        // 微信用户权限信息:OpenID-用户唯一标识
        $authCodeArr = $this->_getAuthCode($code);

        // 处理微信登录后的逻辑

	}

    /**
     * 发送请求,获取微信用户权限信息
     * @param $code string 临时登录凭证code
     *
     * @return false|mixed|string
     */
    public function _getAuthCode($code)
    {
        $params = [
            'appid'      => self::APP_ID,
            'secret'     => self::APP_SECRET,
            'js_code'    => $code,
            'grant_type' => self::GRANT_TYPE,
        ];

        // 拼接请求地址
        $url = self::WX_LOGIN_URL . '?' . http_build_query($params);

        $result = file_get_contents($url);
        $result = json_decode($result, true);

        return $result;
    }
    
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值