您现在的位置是:网站首页>>微信>>微信小程序

Yii 使用EasyWechat 实现小程序获取用户的openID

发布时间:2020-03-16 10:27:41作者:wangjian浏览量:504点赞量:0

    一:安装EasyWechat

    EasyWechat文档:https://www.easywechat.com/docs

    在Yii使用EasyWechat,有两个拓展可以使用,分别为jianyan74/yii2-easy-wechat 适用于 EasyWeChat 4.x,max-wen/yii2-easy-wechat 适用于 EasyWeChat 3.x,这里我是用的是jianyan74/yii2-easy-wechat拓展

    composer require jianyan74/yii2-easy-wechat

    二:配置EasyWechat

    1:在config/main.php 的 component中添加

    'wechat' => [
        'class' => 'jianyan\easywechat\Wechat',
        'userOptions' => [],  // 用户身份类参数
        'sessionParam' => 'wechatUser', // 微信用户信息将存储在会话在这个密钥
        'returnUrlParam' => '_wechatReturnUrl', // returnUrl 存储在会话中
        'rebinds' => [ // 自定义服务模块
        ]
    ],

    2:在config/params.php文件中添加(这里我只进行小程序的配置.其他配置可参考EasyWechat官网)

    // 微信小程序配置
    'wechatMiniProgramConfig' => [
        'app_id' => 'XXXX',
        'secret' => 'XXXX',
        // 下面为可选项
        // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
        'response_type' => 'array',
        //日志配置
        'log' => [
            'level' => 'debug',
            'file' => dirname(dirname(__DIR__)) . '/api/runtime/wechat.log',
        ],
    ],

    三:根据前端传来的code获取用户的openID

    $request = Yii::$app->getRequest();
    $miniProgram = Yii::$app->wechat->miniProgram;
    $code2Session = $miniProgram->auth->session($request->post('code', ''));
    $openID = $code2Session['openid'];//用户的openID
    $sessionKey = $code2Session['session_key'];//session_key

    四:小程序端的code值获取

    在小程序端可以使用wx.login方法来获取code值

    wx.login({
      success (res) {
        if (res.code) {
          //获取code
          console.log(res.code)
          })
        } else {
          console.log('登录失败!' + res.errMsg)
        }
      }
    })


0 +1