...
|
...
|
@@ -480,7 +480,70 @@ class WechatService extends BaseService |
|
|
*/
|
|
|
public function authLoginWithOfficialAccount($request)
|
|
|
{
|
|
|
record_log('wechat-auth', '微信公众号授权登录' , 'begin');
|
|
|
record_log('wechat-auth', '请求信息:' .json_encode($request->all()));
|
|
|
|
|
|
$code = $request->input('code');
|
|
|
if (!$code) {
|
|
|
$this->message = '授权失败,code不能为空。';
|
|
|
return false;
|
|
|
}
|
|
|
// $config = [
|
|
|
// 'app_id' => config('wechat.official_account.app_id'),
|
|
|
// 'secret' => config('wechat.official_account.secret'),
|
|
|
// // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
|
|
|
// 'oauth' => [
|
|
|
// 'scopes' => ['snsapi_userinfo'],
|
|
|
// 'callback' => '/oauth_callback',
|
|
|
// ],
|
|
|
// // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
|
|
|
// 'response_type' => 'array',
|
|
|
// ];
|
|
|
|
|
|
// 实例化公众号对象
|
|
|
$app = app('wechat.official_account');
|
|
|
// 获取用户授权信息
|
|
|
$user = $app->oauth->user();
|
|
|
// 获取用户信息
|
|
|
$user_info = $user->getOriginal();
|
|
|
|
|
|
record_log('wechat-auth', '授权用户信息:' .json_encode($user_info));
|
|
|
|
|
|
// 获取 openid
|
|
|
$openid = Arr::get($user_info, 'openid');
|
|
|
|
|
|
// 获取授权用户
|
|
|
$user = null;
|
|
|
if ($openid) {
|
|
|
$user = User::where('openid', $openid)->first();
|
|
|
}
|
|
|
|
|
|
// 未获取到创建新用户
|
|
|
if (!$user) {
|
|
|
$user = $this->createUser($request, $openid);
|
|
|
}
|
|
|
|
|
|
// 设置微信头像和昵称
|
|
|
if ($user_info) {
|
|
|
if (Arr::get($user_info, 'headimgurl')) {
|
|
|
$user->avatar = Arr::get($user_info, 'headimgurl');
|
|
|
}
|
|
|
if (Arr::get($user_info, 'nickname')) {
|
|
|
$user->nickname = Arr::get($user_info, 'nickname');
|
|
|
}
|
|
|
$user->gender = Arr::get($user_info, 'sex');
|
|
|
$user->country = Arr::get($user_info, 'country');
|
|
|
$user->province = Arr::get($user_info, 'province');
|
|
|
$user->city = Arr::get($user_info, 'city');
|
|
|
}
|
|
|
$user->token = JWTAuth::fromuser($user);
|
|
|
$user->save();
|
|
|
|
|
|
// 记录登陆日志
|
|
|
$this->recordLoginRecord($request, $user);
|
|
|
return $user;
|
|
|
|
|
|
// dd($wechat_user);
|
|
|
|
|
|
record_log('wechat-auth', '请求信息:' .json_encode($request->all()));
|
|
|
$code = $request->input('code');
|
|
|
if (!$code) {
|
...
|
...
|
@@ -489,6 +552,8 @@ class WechatService extends BaseService |
|
|
return false;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 正在申请
|
|
|
$user_info = session('wechat.oauth_user.default')->original; // 拿到授权用户资料
|
|
|
record_log('wechat-auth', '授权用户信息:' .json_encode($user_info));
|
...
|
...
|
@@ -540,12 +605,11 @@ class WechatService extends BaseService |
|
|
$user->province = Arr::get($user_info, 'province');
|
|
|
$user->city = Arr::get($user_info, 'city');
|
|
|
}
|
|
|
$user->token = JWTAuth::fromuser($user);
|
|
|
$user->token = JWTAuth::fromuser($user);
|
|
|
$user->save();
|
|
|
|
|
|
// 记录登陆日志
|
|
|
$this->recordLoginRecord($request, $user);
|
|
|
record_log('wechat-auth', '微信公众号授权登录' , 'end');
|
|
|
return $user;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -559,7 +623,7 @@ class WechatService extends BaseService |
|
|
*/
|
|
|
public function createUser($request, $openid, $mobile = '')
|
|
|
{
|
|
|
$user = new User();
|
|
|
$user = $this->create($request);
|
|
|
// 创建用户
|
|
|
$pid = $request->inviter_id ? : 0; // 邀请人id
|
|
|
$gid = 0;
|
...
|
...
|
@@ -582,7 +646,6 @@ class WechatService extends BaseService |
|
|
$user->nickname = '昵称' . $user->id;
|
|
|
$user->avatar = 'avatar/'. rand(1, 20) .'.png';
|
|
|
|
|
|
|
|
|
return $user;
|
|
|
}
|
|
|
|
...
|
...
|
|