添加绑定小程序账号
This commit is contained in:
parent
b3a4245781
commit
63bee8d493
@ -309,6 +309,63 @@ class Auth extends BaseController
|
||||
return app('json')->success($userRepository->returnToken($user[1], $tokenInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号用户绑定微信账号
|
||||
* @param UserRepository $repository
|
||||
* @return mixed
|
||||
* @throws DataNotFoundException
|
||||
* @throws DbException
|
||||
* @throws ModelNotFoundException
|
||||
*/
|
||||
public function bindMp(UserRepository $repository)
|
||||
{
|
||||
list($code, $post_cache_key, $phone) = $this->request->params([
|
||||
'code',
|
||||
'cache_key',
|
||||
'phone',
|
||||
], true);
|
||||
$userInfoCong = Cache::get('eb_api_code_' . $code);
|
||||
if (!$code && !$userInfoCong)
|
||||
return app('json')->fail('授权失败,参数有误');
|
||||
$miniProgramService = MiniProgramService::create();
|
||||
if ($code && !$userInfoCong) {
|
||||
try {
|
||||
$userInfoCong = $miniProgramService->getUserInfo($code);
|
||||
Cache::set('eb_api_code_' . $code, $userInfoCong, 86400);
|
||||
} catch (Exception $e) {
|
||||
return app('json')->fail('获取session_key失败,请检查您的配置!', ['line' => $e->getLine(), 'message' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
$data = $this->request->params([
|
||||
['spread_spid', 0],
|
||||
['spread_code', ''],
|
||||
['iv', ''],
|
||||
['encryptedData', ''],
|
||||
]);
|
||||
try {
|
||||
//解密获取用户信息
|
||||
$userInfo = $miniProgramService->encryptor($userInfoCong['session_key'], $data['iv'], $data['encryptedData']);
|
||||
} catch (Exception $e) {
|
||||
if ($e->getCode() == '-41003') return app('json')->fail('获取会话密匙失败');
|
||||
throw $e;
|
||||
}
|
||||
if (!$userInfo) return app('json')->fail('openid获取失败');
|
||||
if (!isset($userInfo['openId'])) $userInfo['openId'] = $userInfoCong['openid'] ?? '';
|
||||
$userInfo['unionId'] = $userInfoCong['unionid'] ?? $userInfo['unionId'] ?? '';
|
||||
if (!$userInfo['openId']) return app('json')->fail('openid获取失败');
|
||||
/** @var WechatUserRepository $make */
|
||||
$make = app()->make(WechatUserRepository::class);
|
||||
$user = $make->syncRoutineUser($userInfo['openId'], $userInfo, false);
|
||||
if (!$user) {
|
||||
return app('json')->fail('授权失败');
|
||||
}
|
||||
$userInDb = $repository->accountByUser($phone);
|
||||
if ($userInDb->save(['wechat_user_id' => $user[0]['wechat_user_id']]) === false) {
|
||||
return app('json')->fail('授权失败');
|
||||
}
|
||||
return app('json')->success();
|
||||
}
|
||||
|
||||
public function getCaptcha()
|
||||
{
|
||||
$codeBuilder = new CaptchaBuilder(null, new PhraseBuilder(4));
|
||||
|
@ -595,6 +595,8 @@ Route::group('api/', function () {
|
||||
Route::get('auth/wechat', 'api.Auth/auth');
|
||||
//小程序授权
|
||||
Route::post('auth/mp', 'api.Auth/mpAuth');
|
||||
//绑定小程序账号
|
||||
Route::post('auth/bindMp', 'api.Auth/bindMp');
|
||||
//app授权
|
||||
Route::post('auth/app', 'api.Auth/appAuth');
|
||||
//apple授权
|
||||
|
Loading…
x
Reference in New Issue
Block a user