国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

Laravel 微信小程序后端實現用戶登錄的示例代碼

2024-07-09 22:41:55
字體:
來源:轉載
供稿:網友

接上篇微信小程序后端搭建:分享:Laravel 微信小程序后端搭建

后端搭建好后第一件事就是用戶登錄認證,簡單實現微信小程序登錄認證

1.user 模型

use Laravel/Passport/HasApiTokens; 新增

use HasApiTokens, Notifiable;protected $fillable = [ 'id', 'name', 'email', 'email_verified_at', 'username', 'phone', 'avatar',//我用來把微信頭像的/0清晰圖片,存到又拍云上 'weapp_openid', 'nickname', 'weapp_avatar', 'country', 'province', 'city', 'language', 'location', 'gender', 'level',//用戶等級 'is_admin',//is管理員];

2. 新增一條路由

//前端小程序拿到的地址:https://域名/api/v1/自己寫的接口Route::group(['prefix' => '/v1'], function () {  Route::post('/user/login', 'UserController@weappLogin');});

3. 在 UserController 控制器里新建 function weappLogin (),別忘了 use 這些

use App/User;use Carbon/Carbon;use Illuminate/Http/Request;use Illuminate/Support/Facades/Storage;

寫兩個 function weappLogin (),avatarUpyun ()

public function weappLogin(Request $request)  {    $code = $request->code;    // 根據 code 獲取微信 openid 和 session_key    $miniProgram = /EasyWeChat::miniProgram();    $data = $miniProgram->auth->session($code);    if (isset($data['errcode'])) {      return $this->response->errorUnauthorized('code已過期或不正確');    }    $weappOpenid = $data['openid'];    $weixinSessionKey = $data['session_key'];    $nickname = $request->nickname;    $avatar = str_replace('/132', '/0', $request->avatar);//拿到分辨率高點的頭像    $country = $request->country?$request->country:'';    $province = $request->province?$request->province:'';    $city = $request->city?$request->city:'';    $gender = $request->gender == '1' ? '1' : '2';//沒傳過性別的就默認女的吧,體驗好些    $language = $request->language?$request->language:'';    //找到 openid 對應的用戶    $user = User::where('weapp_openid', $weappOpenid)->first();    //沒有,就注冊一個用戶    if (!$user) {      $user = User::create([        'weapp_openid' => $weappOpenid,        'weapp_session_key' => $weixinSessionKey,        'password' => $weixinSessionKey,        'avatar' => $request->avatar?$this->avatarUpyun($avatar):'',        'weapp_avatar' => $avatar,        'nickname' => $nickname,        'country' => $country,        'province' => $province,        'city' => $city,        'gender' => $gender,        'language' => $language,      ]);    }    //如果注冊過的,就更新下下面的信息    $attributes['updated_at'] = now();    $attributes['weixin_session_key'] = $weixinSessionKey;    $attributes['weapp_avatar'] = $avatar;    if ($nickname) {      $attributes['nickname'] = $nickname;    }    if ($request->gender) {      $attributes['gender'] = $gender;    }    // 更新用戶數據    $user->update($attributes);    // 直接創建token并設置有效期    $createToken = $user->createToken($user->weapp_openid);    $createToken->token->expires_at = Carbon::now()->addDays(30);    $createToken->token->save();    $token = $createToken->accessToken;    return response()->json([      'access_token' => $token,      'token_type' => "Bearer",      'expires_in' => Carbon::now()->addDays(30),      'data' => $user,    ], 200);  }  //我保存到又拍云了,版權歸騰訊所有。。。頭條鬧的  private function avatarUpyun($avatar)  {    $avatarfile = file_get_contents($avatar);    $filename = 'avatars/' . uniqid() . '.png';//微信的頭像鏈接我也不知道怎么獲取后綴,直接保存成png的了    Storage::disk('upyun')->write($filename, $avatarfile);    $wexinavatar = config('filesystems.disks.upyun.protocol') . '://' . config('filesystems.disks.upyun.domain') . '/' . $filename;    return $wexinavatar;//返回鏈接地址  }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玛曲县| 罗城| 民县| 长汀县| 宁安市| 收藏| 遵化市| 江川县| 辽中县| 博乐市| 北宁市| 仪征市| 重庆市| 竹溪县| 峨眉山市| 仪陇县| 临夏县| 鄂温| 芦山县| 信宜市| 诸城市| 洞口县| 将乐县| 安泽县| 定结县| 枝江市| 大英县| 大石桥市| 会理县| 大宁县| 通州区| 岑溪市| 息烽县| 华容县| 兴安县| 阳曲县| 昭觉县| 安泽县| 庐江县| 三穗县| 通海县|