diff --git a/app/Http/Controllers/Api/AuthController.php b/app/Http/Controllers/Api/AuthController.php index de1414d..8b0a8e3 100644 --- a/app/Http/Controllers/Api/AuthController.php +++ b/app/Http/Controllers/Api/AuthController.php @@ -2,20 +2,44 @@ namespace App\Http\Controllers\Api; +use Cache; use Carbon\Carbon; use Illuminate\Http\Request; use App\Services\Api\UserService; use App\Http\Resources\Api\UserResource; +use Overtrue\LaravelWeChat\EasyWeChat; +use Illuminate\Support\Arr; class AuthController extends ApiController { protected string $serviceName = UserService::class; - public function codeToSession() + public function codeToSession(Request $request) { - //微信小程序-todo - // dd(); - $openid = '132465'; + $request->validate([ + 'code' => 'required', + ], [ + 'code.required' => '授权码必填', + ]); + //绑定OPenid + $code = $request->input('code'); + $app = EasyWeChat::miniApp(); + $utils = $app->getUtils(); + + try { + $response = $utils->codeToSession($code); + }catch (\Throwable $th) { + return $this->error($th->getMessage()); + } + + if (Arr::get($response, 'errcode')) { + return $this->error(Arr::get($response, 'errmsg')); + } + + $openid = Arr::get($response, 'openid'); + $sessionKey = Arr::get($response, 'session_key'); + Cache::put($openid, $sessionKey, 48*60*60); + $user = $this->service->register($openid); $apiToken = $this->service->login($user);