用户登录

微信相关文档 https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html

WxAppUser实现了一下功能:

  • 获取用户OpenId
  • 获取小程序用户信息

配置

Config 配置文件

    // 组件
    'components' => [

        // ...
        // 微信小程序
        'wxApp' => [
            'class' => '\wii\weixin\app\WxApp',
            'appId' => 'appidddddddd',
            'appSecret' => 'appsecretttttttttttttt',
        ]
        // ...

    ]

Filter 配置文件

## 微信小程序登录过滤
rule_wxappuser:
  controllers: ['*']
  filter:
    ## 默认过滤
    default:
      class: '\wii\filters\AppUserFilter'
      except: ['user-auth']
      types:
        wx_app: {}
    access:
      class: '\wii\filters\AccessControl'
      except: ['user-auth']
      rules:
      - { allow: true, 'roles': ['@']}

常用登录态处理方法

Wii-PHP框架提供了标准微信小程序用户的登录授权接口,其中包含登录态的缓存机制,可以通过一下方式调用:

用户登录验证

wii\weixin\app\actions\UserAuthAction
  • Action调用
public function actions()
{
    return [
        // 微信小程序用户授权
        'user-auth' => [
            'class' => 'wii\weixin\app\actions\UserAuthAction'
        ]
    ];
}
  • 请求方式:POST(HTTPS)

  • 请求地址:https://[YOUR_URL]/wxapp/user/user-oauth

  • 请求参数说明

字段名 变量名 必填 类型 示例值 描述
微授权码 wxa_code string 071cSE7k1lEAfm0Ps0ak1hiM7k1cSE7x
  • 返回结果
{
  "ret": 0,
  "msg": "OK",
  "errorcode": 0,
  "data": {
    "wxa_session_id": "KDfSUgMuJ3Mj6coJkVoqsoTlUKbkS8oB",
    "wxa_time_stamp": 1540199535000,
    "need_update": 1
}
  • 返回参数说明
变量名 描述
wxa_session_id SessionId
wxa_time_stamp SessionId有效期时间戳(毫秒)

获取用户信息

wii\weixin\app\actions\UserGetInfoAction
  • Action调用
public function actions()
{
    return [
        // 获取微信小程序用户信息
        'user-get-info' => [
            'class' => 'wii\weixin\app\actions\UserGetInfoAction'
        ]
    ];
}
  • 请求方式:POST(HTTPS)

  • 请求地址:https://[YOUR_URL]/wxapp/user/user-get-info

  • 请求参数说明

字段名 变量名 必填 类型 示例值 描述
微授权码 wxa_code string 071cSE7k1lEAfm0Ps0ak1hiM7k1cSE7x
  • 返回结果 user-get-info
    {
    "ret": 0,
    "msg": "OK",
    "errorcode": 0,
    "data": {
      "app_id": "wxf40f90f4c3240f71",
      "uid": "0",
      "open_id": "objwg0dxVzx8P5SIj0GXb8Civlmw",
      "union_id": "",
      "nickname": "nikoniu",
      "head_img_url": "https://wx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM6F22n1sFvgy3RLhfr1YYNs5ica3ibpnHwTBVhYdjhsMw9GCtxcLdMEkLZdVX2yI1VyytHzQR0joDag/132",
      "mobile": null,
      "email": null
    }
    }
    
  • 返回参数说明
变量名 描述
app_id 微信小程序app_id
uid 用户uid
open_id 用户openid
union_id 用户unionid
nickname 昵称
head_img_url 头像URL
mobile 手机号
email 邮箱

获取用户手机号

wii\weixin\app\actions\UserGetPhoneNumberAction
public function actions()
{
    return [
        // 获取微信小程序用户信息
        'user-get-phone-number' => [
            'class' => 'wii\weixin\app\actions\UserGetPhoneNumberAction'
        ]
    ];
}
  • 请求方式:POST(HTTPS)

  • 请求地址:https://[YOUR_URL]/wxapp/user/user-get-phone-number

  • 请求参数说明

字段名 变量名 必填 类型 示例值 描述
微授权码 wxa_code string 071cSE7k1lEAfm0Ps0ak1hiM7k1cSE7x
  • 返回结果
{
  "ret": 0,
  "msg": "OK",
  "errorcode": 0,
  "data": {
    "mobile": "18611586607"
  }
}
  • 返回参数说明
变量名 描述
mobile 手机号

常用方法

获取用户OpenId


// 获取用户OpenId
$openId = \Wii::app()->user->getId();

获取 sessionId (可用于前端数据接口请求使用)


// 获取 sessionId
$sessionId = \Wii::app()->user->getSessionId();

获取 sessionKey(仅用户后端接口请求使用,不可用在前后端接口请求使用)

// 获取 sessionKey
$sessionKey = \Wii::app()->user->getSessionKey();

results matching ""

    No results matching ""