composer中配置的是
"overtrue/laravel-wechat"
-
登录的时候需要拿到token值,需要跟后端配合才能拿到
小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器
开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key
流程图 很清晰了

后端服务器收到验证后存数据库 最后返回和前端的交互token
/**
* 微信授权登录
* @param Request $request
* @return array
*/
public function wxappLogin(Request $request)
{
$app = \EasyWeChat::miniProgram();
$data = $app->auth->session($request->code);
//判断code是否过期
if (isset($data['errcode'])) {
return apiJsonError('code已过期或不正确');
}
$weappOpenid = $data['openid'];
$weixinSessionKey = $data['session_key'];
$user = User::UpdateOrCreate(['openid'=>$weappOpenid],[
'openid' => $weappOpenid,
'nickname' => $request->nickName,
'avatar' => $request->avatarUrl,
'gender' => $request->gender,
'birthday' => $request->birthday,
'session_key' => $weixinSessionKey,
'country' => $request->country,
'province' => $request->province,
'city' => $request->city,
]);
if (! $token = auth()->login($user)) {
return apiJsonError(['error' => 'Unauthorized'], 401);
}
$ttl = $request->out_time ?? config('jwt.ttl'); # 设置token 过期时间
if (!$token = Auth::guard('api')->setTTL($ttl)->tokenById($user->id)) {
throw new ApiException('用户名或密码错误');
}
return apiJson($this->respondWithToken($token));
}

本文介绍了如何使用laravel-wechat在Laravel5.8中实现小程序授权登录。首先,通过composer配置相关组件。接着,小程序调用wx.login获取code,将code发送到后端服务器。服务器利用code换取openid和session_key,并存储到数据库。最后,后端返回token给前端,完成交互过程。
5659

被折叠的 条评论
为什么被折叠?



