fastadmin 企业微信应用登录并同时获取职位等信息

最近做了一个企业微信的应用项目,公司内部使用,需求员工在登录之后需要获取并显示该员工的职位等信息,故此记录一下。

/**
     * 获取授权地址
     */
    public function getUrl()
    {
        $redirect_uri = urlencode('应用链接地址');
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_privateinfo&agentid=" . $agentid . "&state=STATE#wechat_redirect";
        $this->success('', $url);
    }
/**
     * 第三方登录
     *
     */
    public function third()
    {
        $code = $this->request->post('code');

        $access_token = getAccessToken();
        //获得用户信息
        $url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=$access_token&code=$code";
        $ret = file_get_contents($url);
        $ret = json_decode($ret, true);
        if (isset($ret['user_ticket'])) {
            //获取用户敏感信息
            $url_ = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=$access_token&userid=" . $ret['UserId'];
            $res = Http::get($url_);
            $res = json_decode($res, true);
            //获取所有部门
            $url1 = 'https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=' . getAccessToken();
            $row = Http::get($url1);
            $row = json_decode($row, true);
            // Log::error($row);
            $department = [];
            foreach ($row['department'] as $value) {
                if (in_array($value['id'], $res['department'])) $department[] = $value['name'];
            }
            if ($res['errcode'] == 0) {
                //判断用户是否注册
                $user = db('user')->where('username', $res['userid'])->find();
                if ($user) {
                    if ($user['status'] != 'normal') {
                        $this->error(__('Account is locked'));
                    }
                    db('user')->where('id', $user['id'])->update([
                        'nickname' => $res['name'],
                        'position' => $res['position'],
                        'department' => implode(',', $department),
                    ]);
                    //如果已经有账号则直接登录
                    $ret = $this->auth->direct($user['id']);
                } else {
                    $userid = $res['userid'];
                    $extend = [
                        'nickname' => $res['name'],
                        'position' => $res['position'],
                        'department' => implode(',', $department),
                    ];
                    $ret = $this->auth->register($userid, Random::alnum(), '', '', $extend);
                }
                if ($ret) {
                    $data = ['userInfo' => $this->auth->getUserinfo()];
                    $this->success(__('Logged in successful'), $data);
                } else {
                    $this->error($this->auth->getError());
                }
            }
            $this->error($res['errmsg']);
        }
        $this->error($ret['errmsg']);
    }

if (!function_exists('getAccessToken')) {

    /**
     * 获取access_token
     * @return mixed
     */
    function getAccessToken()
    {
        $accessToken = \think\Cache::get('accessToken');
        if (!$accessToken)
        {
            $url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='.$corpID.'&corpsecret='.$corpsecret;
            $data = \fast\Http::get($url);
            $data = json_decode($data,true);
            \think\Cache::set('accessToken',$data['access_token'],$data['expires_in']);
            $accessToken = $data['access_token'];
        }
        return $accessToken;
    }
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue Element Admin 是一款基于Vue.js和Element UI的企业级后台管理系统模板,它提供了丰富的组件和模板,方便开发者快速搭建高质量的后台管理系统。企业微信是一款融合办公和通讯功能的应用,为企业内部提供了便捷的通讯和管理工具。在Vue Element Admin中使用企业微信登录,可以方便地实现用户的身份认证和授权。 在实现企业微信登录之前,需要先注册企业微信开发者账号,并创建一个应用。然后,在Vue Element Admin中添加企业微信登录的功能,具体步骤如下: 1. 在Vue Element Admin项目中,安装相关的插件和依赖,例如 `npm install qyweixin-js-sdk`。 2. 在项目的登录页面中添加企业微信登录按钮,并监听点击事件。 3. 在企业微信登录按钮的点击事件中,调用企业微信提供的SDK,获取授权登录的URL。 4. 在获取到授权登录的URL后,跳转到企业微信登录页面。 5. 用户在企业微信登录页面输入企业微信账号和密码后,企业微信将用户的登录信息返回给Vue Element Admin。 6. 在Vue Element Admin中,通过企业微信返回的登录信息,验证用户身份,并进行相应的处理。 7. 验证通过后,将用户的登录状态保存在Vue Element Admin中的状态管理中,以便后续页面的访问和操作。 8. 完成企业微信登录功能后,还可以根据需要,对接企业微信提供的其他功能,例如获取企业微信通讯录、发送企业微信消息等。 通过以上步骤,Vue Element Admin就可以实现企业微信登录功能,使用户可以使用企业微信账号登录系统,享受更加便捷的操作和管理体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cq林志炫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值