TP5.1企业微信授权

大概思路:用户访问我们的某个例如www.baidu.com/home/index/index
我们判断Session是否有用户的uid
如果没有,跳到授权页面 (url里面带上当前页面www.baidu.com/home/index/index 或者 把当前url放入Session)
跳到授权页面,拿到用户信息,根据openid或者uid去数据库查询用户,存在即更新用户信息,不存在即添加用户信息。并且把uid放入Session里面,跳回授权之前访问的页面(url里面获取或者Session获取之前访问的页面)

ThinkPHP5.1+EasyWeChat 企业微信授权
composer安装EasyWeChat

$ composer require overtrue/wechat:~4.0 -vvv

授权代码demo

<?php
/**
 * Created by PhpStorm.
 * User: Pasa吴
 * Date: 2019/4/7
 * Time: 21:15
 */

namespace app\home\controller;

use EasyWeChat\Factory;
use think\Controller;
use think\facade\Session;

use app\admin\model\User AS M_User;

/**
 * 企业微信公众号授权
 */
class Index extends Controller
{
    protected $app;
    protected $oauth;
    protected $config;

    public function __construct()
    {
        parent::__construct();
        $this->config = [
            'corp_id' => 'xxx',

            'agent_id'      => 1000014, // 如果有 agend_id 则填写
            'secret'        => 'xxxx',

            // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
            'response_type' => 'array',

            'log'   => [
                'level' => 'debug',
                'file'  => __DIR__ . '/wechat.log',
            ],
            'oauth' => [
                'scopes'   => ['snsapi_userinfo'],
                //授权地址
                'callback' => 'https://pasawu.top/home/index/authorization',
            ],
        ];
        $this->app    = Factory::work($this->config);
        $this->oauth  = $this->app->oauth;
    }

    /**
     * 首页
     * @return mixed|\Symfony\Component\HttpFoundation\RedirectResponse
     */
    public function index()
    {
        //判断是否已经授权
        if (!Session::has('uid')) {
            //授权后转回的url
            Session::set('target_url', "https://pasawu.top/home/index/index");

            return $this->oauth->redirect();

        }
        Session::get('uid');

        return $this->fetch('index');
    }

    /**
     * 授权
     */
    public function authorization()
    {
        // 获取 OAuth 授权结果用户信息
        $user = $this->oauth->user();

        //保存用户信息 返回uid放入Session
        $uid = M_User::add($user->toArray(), $user->getNickname());

        Session::set('uid', $uid);

        header('location:' . Session::get("target_url")); // 跳转到授权之前的页面
    }


}

Pasa吴技术博客
请先登录后发表评论
  • latest comments
  • 总共0条评论