第三方登录

目前已有微信小程序登录、微信公众号登录

第三方登录扩展入口

namespace crmeb\services\oauth;


use crmeb\basic\BaseManager;
use crmeb\services\oauth\storage\MiniProgram;
use crmeb\services\oauth\storage\TouTiao;
use crmeb\services\oauth\storage\Wechat;
use think\facade\Config;

/**
 * 第三方登录
 * Class OAuth
 * @package crmeb\services\oauth
 * @mixin Wechat
 * @mixin TouTiao
 * @mixin MiniProgram
 */
class OAuth extends BaseManager
{

    /**
     * 空间名
     * @var string
     */
    protected $namespace = '\\crmeb\\services\\oauth\\storage\\';

    /**
    * 默认驱动
     * @return mixed
     */
    protected function getDefaultDriver()
    {
        return Config::get('oauth.default', 'wechat');
    }
}

使用第三方登录

默认微信登录方式调用


use crmeb\services\oauth\OAuth;

//默认微信登录
$oauth = new OAuth();

//使用code返回用户信息
$userInfo = $oauth->oauth($code = null, $options = []);

使用微信小程序登录调用


use crmeb\services\oauth\OAuth;

//微信小程序登录
$oauth = new OAuth('mini_program');

$code = 'code';

//使用code返回用户信息
$userInfo = $oauth->oauth( $code = null, $options = [
    'iv'=>$iv,
    'encryptedData'=>$encryptedData
]);

使用微信小程序静默授权登录调用


use crmeb\services\oauth\OAuth;

//微信小程序登录
$oauth = new OAuth('mini_program');

$code = 'code';

//使用code返回用户信息
$userInfo = $oauth->oauth( $code = null, $options = [
    'silence'=>true,
]);

举例增加:头条小程序登录

创建头条小程序登录类\crmeb\services\oauth\storage\TouTiao.php,并需要继承BaseStorage基类,和OAuthInterface接口类,需要完成getUserInfo、oauth两个方法



namespace crmeb\services\oauth\storage;


use crmeb\basic\BaseStorage;
use crmeb\services\oauth\OAuthInterface;

/**
 * 头条小程序登录
 * Class TouTiao
 * @package crmeb\services\oauth\storage
 */
class TouTiao extends BaseStorage implements OAuthInterface
{

    protected function initialize(array $config)
    {
        // TODO: Implement initialize() method.
    }

    //获取用户信息
    public function getUserInfo(string $openid)
    {
        // TODO: Implement getUserInfo() method.
    }

    //授权登录
    public function oauth(string $code = null, array $options = [])
    {
        // TODO: Implement oauth() method.
    }
}

示例头条小程序登录使用方式

use crmeb\services\oauth\storage\TouTiao;

$oauth = new OAuth('tou_tiao');
//或者
$oauth = app()->make(OAuth::class, ['tou_tiao']);

$code = 'code';
//授权用户获取信息
$userInfo = $oauth->oauth($code);

var_dump($userInfo);

//获取用户详细信息
$openid = 'openid';
$userInfo = $oauth->getUserInfo($openid);

var_dump($userInfo);