createAccountByGoogle static method
Implementation
static Future<void> createAccountByGoogle(String googleApiKey) async {
await initialize();
logger.finest('createAccountByGoogle start');
if (googleApiKey.isEmpty) {
throw HycopUtils.getHycopException(defaultMessage: 'No googleApiKey !!!');
}
_googleSignIn ??= google_sign_in.GoogleSignIn(clientId: googleApiKey, scopes: []);
try {
final checkSignInResultO = await _googleSignIn!.isSignedIn();
logger.finest('login result=$checkSignInResultO');
if (checkSignInResultO) {
_googleAccount = await _googleSignIn!.signInSilently();
if (_googleAccount == null) {
logger.finest('login disconnect');
await _googleSignIn!.disconnect();
throw HycopUtils.getHycopException(defaultMessage: 'login disconnect!!!');
}
} else {
_googleAccount = await _googleSignIn!.signIn();
if (_googleAccount == null) {
logger.finest('login cancel');
await _googleSignIn!.disconnect();
throw HycopUtils.getHycopException(defaultMessage: 'login cancel!!!');
}
}
final value = await AccountManager.isExistAccount(_googleAccount!.email)
.catchError((error, stackTrace) {
throw HycopUtils.getHycopException(
error: error, defaultMessage: 'isExistAccount error !!!');
}); /*.then((value) {
if (value == true) {
alreadyExistAccount = true;
//throw HycopUtils.getHycopException(defaultMessage: 'already exist account !!!');
}
});*/
if (value == AccountSignUpType.removed) {
throw HycopUtils.getHycopException(
defaultMessage: 'before removed account !!!',
code: HycopException.emailBeforeRemoved,
);
}
if (value == AccountSignUpType.none) {
Map<String, dynamic> userData = {};
userData['name'] = _googleAccount!.displayName ?? '';
userData['email'] = _googleAccount!.email;
userData['password'] = _googleAccount!.email;
userData['accountSignUpType'] = AccountSignUpType.google.index;
userData['imagefile'] = _googleAccount!.photoUrl;
userData['isRemoved'] = false;
await createAccount(userData).then((value) {}).onError((error, stackTrace) {
throw HycopUtils.getHycopException(
error: error, defaultMessage: 'createAccount error !!!');
});
}
if (_currentLoginUser.isLoginedUser == false) {
await loginByService(_googleAccount!.email, AccountSignUpType.google)
.then((value) {})
.onError((error, stackTrace) {
throw HycopUtils.getHycopException(
error: error, defaultMessage: 'loginByService error !!!');
});
}
} catch (error) {
throw HycopUtils.getHycopException(
error: error, defaultMessage: 'unknown google-account error !!!');
}
}