目前已有微信小程序登录、微信公众号登录
第三方登录扩展入口
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);
Was this helpful?
0 / 0