微信登录
This commit is contained in:
parent
dd1fac2198
commit
49d7b3f1ac
|
|
@ -6,17 +6,28 @@ use app\common\controller\Api;
|
||||||
|
|
||||||
class Worker extends Api
|
class Worker extends Api
|
||||||
{
|
{
|
||||||
protected $noNeedLogin = ['phoneLogin'];
|
protected $noNeedLogin = ['login'];
|
||||||
protected $noNeedRight = ['*'];
|
protected $noNeedRight = ['*'];
|
||||||
|
|
||||||
function phoneLogin()
|
function login()
|
||||||
{
|
{
|
||||||
$params = $this->request->request();
|
$params = $this->request->request();
|
||||||
$validate = $this->validate($params, \app\api\validate\Worker::class . '.phoneLogin');
|
$validate = $this->validate($params, \app\api\validate\Worker::class . '.login');
|
||||||
if ($validate !== true) {
|
if ($validate !== true) {
|
||||||
$this->error($validate);
|
$this->error($validate);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->success('登录成功', $this->getWorkerService()->phoneLogin($params['code']));
|
$this->success('登录成功', $this->getWorkerService()->login($params['code']));
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindPhoneNumber()
|
||||||
|
{
|
||||||
|
$params = $this->request->request();
|
||||||
|
$validate = $this->validate($params, \app\api\validate\Worker::class . '.bindPhoneNumber');
|
||||||
|
if ($validate !== true) {
|
||||||
|
$this->error($validate);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->success('操作成功', $this->getWorkerService()->bindPhoneNumber($params['code']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ use think\Validate;
|
||||||
class Worker extends Validate
|
class Worker extends Validate
|
||||||
{
|
{
|
||||||
protected $rule = [
|
protected $rule = [
|
||||||
'code|手机号获取凭证 code ' => 'require|max:128',
|
'code' => 'require|max:128',
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $message = [
|
protected $message = [
|
||||||
|
|
@ -15,6 +15,7 @@ class Worker extends Validate
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $scene = [
|
protected $scene = [
|
||||||
'phoneLogin' => ['code'],
|
'login' => ['code'],
|
||||||
|
'bindPhoneNumber' => ['code'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,13 @@ class BaseService
|
||||||
protected function apiError($msg, $code = 0, $data = [])
|
protected function apiError($msg, $code = 0, $data = [])
|
||||||
{
|
{
|
||||||
if (!empty($data)) {
|
if (!empty($data)) {
|
||||||
array_unshift($data, $msg);
|
array_unshift($data, ['msg' => $msg]);
|
||||||
Log::log($data);
|
|
||||||
|
$log = [
|
||||||
|
'请求参数' => $_REQUEST,
|
||||||
|
'结果' => $data,
|
||||||
|
];
|
||||||
|
Log::log($log);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new ApiException($msg, $code);
|
throw new ApiException($msg, $code);
|
||||||
|
|
|
||||||
|
|
@ -2,29 +2,55 @@
|
||||||
|
|
||||||
namespace app\services;
|
namespace app\services;
|
||||||
|
|
||||||
use app\api\library\ApiException;
|
|
||||||
use EasyWeChat\Factory;
|
use EasyWeChat\Factory;
|
||||||
|
use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
|
||||||
|
use EasyWeChat\MiniProgram\Application;
|
||||||
|
|
||||||
class WorkerService extends BaseService
|
class WorkerService extends BaseService
|
||||||
{
|
{
|
||||||
public function phoneLogin(string $code)
|
public function bindPhoneNumber(string $code)
|
||||||
{
|
{
|
||||||
$config = [
|
//getPhoneNumber 方法通过魔术方法 __call 获取
|
||||||
'app_id' => config('mini_program.app_id'),
|
$phoneInfo = $this->getMiniProgramApp()->getPhoneNumber($code);
|
||||||
'secret' => config('mini_program.secret'),
|
|
||||||
];
|
|
||||||
$app = Factory::miniProgram($config);
|
|
||||||
$phoneInfo = $app->getPhoneNumber($code);
|
|
||||||
|
|
||||||
if (empty($phoneInfo)) {
|
if (empty($phoneInfo)) {
|
||||||
$this->apiError('手机号登录失败', 0, $phoneInfo);
|
$this->apiError('获取手机号失败', 0, $phoneInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($phoneInfo['errcode'] !== 0) {
|
if ($phoneInfo['errcode'] !== 0) {
|
||||||
$this->apiError('手机号登录失败', 0, $phoneInfo);
|
$this->apiError('获取手机号失败', 0, $phoneInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
$phone = $phoneInfo['phone_info']['phoneNumber'];
|
$phone = $phoneInfo['phone_info']['phoneNumber'];
|
||||||
dump($phone);
|
dump($phone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function login(string $code)
|
||||||
|
{
|
||||||
|
$app = $this->getMiniProgramApp();
|
||||||
|
try {
|
||||||
|
$info = $app->auth->session($code);
|
||||||
|
} catch (InvalidConfigException $e) {
|
||||||
|
$this->apiError('登录失败', $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($info['errcode']) && $info['errcode'] !== 0) {
|
||||||
|
$this->apiError('登录失败', 0, $info);
|
||||||
|
}
|
||||||
|
|
||||||
|
dd($info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取小程序 App
|
||||||
|
* @return Application
|
||||||
|
*/
|
||||||
|
private function getMiniProgramApp(): Application
|
||||||
|
{
|
||||||
|
$config = [
|
||||||
|
'app_id' => config('mini_program.app_id'),
|
||||||
|
'secret' => config('mini_program.secret'),
|
||||||
|
];
|
||||||
|
return Factory::miniProgram($config);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user