Miniapp.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\api\controller;
  4. use app\common\model\Third;
  5. use think\annotation\route\Group;
  6. use think\annotation\route\Post;
  7. #[Group("miniapp")]
  8. class Miniapp extends Api
  9. {
  10. protected $noNeedLogin = ['login','getMobile','mockLogin'];
  11. #[Post('login')]
  12. public function login()
  13. {
  14. $code=$this->request->post('code');
  15. $config=[
  16. 'appid'=>site_config("uniapp.miniapp_id"),
  17. 'appsecret'=>site_config("uniapp.miniapp_secret")
  18. ];
  19. $mini = new \WeMini\Crypt($config);
  20. $data = $mini->session($code);
  21. $openid=$data['openid'];
  22. $unionid=isset($data['unionid'])?$data['unionid']:'';
  23. $avatar=$this->request->post('avatar');
  24. $nickname=$this->request->post('nickname');
  25. $mobile=$this->request->post('mobile');
  26. //判断是否启用账号绑定
  27. $third=Third::connect(Third::PLATFORM('微信小程序'), compact('openid', 'unionid', 'avatar', 'nickname', 'mobile'));
  28. $this->auth->loginByThirdPlatform(Third::PLATFORM('微信小程序'),$third);
  29. $token=$this->auth->getToken();
  30. $userinfo=$this->auth->userinfo();
  31. $this->success('登录成功',compact('token','userinfo'));
  32. }
  33. #[Post('getMobile')]
  34. public function getMobile()
  35. {
  36. $code=$this->request->post('code');
  37. $config=[
  38. 'appid'=>site_config("uniapp.miniapp_id"),
  39. 'appsecret'=>site_config("uniapp.miniapp_secret")
  40. ];
  41. $mini = new \WeMini\Crypt($config);
  42. $result=$mini->getPhoneNumber($code);
  43. $this->success('',$result['phone_info']['phoneNumber']);
  44. }
  45. //模拟登陆
  46. #[Post('mock-login')]
  47. public function mockLogin()
  48. {
  49. $openid=$this->request->post('openid');
  50. $third=Third::where(['openid'=>$openid,'platform'=>Third::PLATFORM('微信小程序')])->find();
  51. $this->auth->loginByThirdPlatform(Third::PLATFORM('微信小程序'),$third);
  52. $token=$this->auth->getToken();
  53. $userinfo=$this->auth->userinfo();
  54. $this->success('登录成功',compact('token','userinfo'));
  55. }
  56. }