Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

혼자서 앱 만드는 개발자 함께하는 AI 세상

[펫버틀러] 반려 동물 고민 상담 앱 - 개발 8 일차 (로그인페이지 서버연동) 본문

펫버틀러

[펫버틀러] 반려 동물 고민 상담 앱 - 개발 8 일차 (로그인페이지 서버연동)

혼앱사 2022. 12. 27. 22:43
반응형

구글로그인 이후 서버와 연동을 위해  기본 사용자 id 정보를 서버에 넘겨줘서 다른 컨텐츠와 여기선 강아지 프로필 적용에 이용해야 한다. 사용자가 강아지 프로필을 등록할때 사용자 id 정보가 필요하다.

그리고 사용자는 로그인시 구글 메세지 토큰정보를 서버에 보관하여 알람처리를 할수있다.

 

아래 코드는 플러터에서 서버로 데이터를 전송하는 부분이다.

  void addServerUser(User? firebaseUser, googleAuth) {
    if (firebaseUser != null) {
      User? currentUser = firebaseUser;
      var email = currentUser.email.toString();

      var postData = <String, String>{
        'user_id': currentUser.uid,
        'passwd': currentUser.uid,
        'user_name': currentUser.displayName.toString(),
        'user_comp': '',
        'user_tel': currentUser.phoneNumber.toString(),
        'inCode': 'google',
        'email': currentUser.email.toString(),
        'msiteName': 'petbutler',
        'messageToken': googleAuth.accessToken
      };
      var gubun = {"BL": "updateUser"};
      NetworkHelper('서버 post url 정보 입력')
          .getPostData(postData, gubun)
          .then((josonValue) async {
        print(josonValue["loginOk"]);
      });
    }
  }

 

 

구글 로그인정보를 받아서 처리하는 부분이 토큰정보등를 받아서 처리한다.

 

Future<bool> handleSignIn() async {
    _status = Status.authenticating;
    notifyListeners();

    GoogleSignInAccount? googleUser = await googleSignIn.signIn();
    if (googleUser != null) {
      GoogleSignInAuthentication? googleAuth = await googleUser.authentication;
      final AuthCredential credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );
      User? firebaseUser =
          (await firebaseAuth.signInWithCredential(credential)).user;

      addServerUser(firebaseUser, googleAuth);

      return checkfirebaseUser(firebaseUser);
    } else {
      _status = Status.authenticateCanceled;
      notifyListeners();
      return false;
    }
  }

 

서버에서 mysql 을 통해서 테이블에 등록하는 소스 

  if( $BL == 'updateUser' ) { 
    $query = "INSERT INTO user`
            (`user_id`, `passwd`, `user_name`, `user_email`,user_comp, `reg_date`, `user_point` , `closeYn` ) 
            VALUES ('".$_POST['user_id']."',password('".$_POST['passwd']."'),'".$_POST['user_name']."', '".$_POST['user_id']."', '', CURRENT_TIMESTAMP,0,'N')";
 
		  	 $query =  " ON DUPLICATE KEY UPDATE    user_name= '".$_POST['user_name'] ."', user_id= '".$_POST['user_id'] ."' ,passwd =password('".$_POST['passwd']."') , user_tel= '".$_POST['user_tel'] ."'
			 , user_comp= '".$_POST['user_comp'] ."'  where inCode='".$_POST['inCode'] ."' " ;

		   
	}	 			 	 
							$result =  mysqli_query($conn, $query )  or die(mysqli_error($conn));
			 			  	$responce= new \stdClass();
							$responce->message ="변경되었습니다.";  
							 echo json_encode($responce);
   }

 

 

로그인화면

 

728x90
반응형
Comments