login method Null safety
登录
Implementation
Future<WechatLoginResponse> login() async {
//获取code
final code = await _getCode();
if (code.errorCode == WechatLoginErrorCode.getCodeSuccess) {
// 获取accessToken
final accessToken = await _getAccessToken(code.code!);
if (accessToken.errorCode ==
WechatLoginErrorCode.getAccessTokenSuccess) {
// 获取用户信息
final res = await Dio().get("https://api.weixin.qq.com/sns/userinfo", queryParameters: {
"access_token": accessToken.accessToken,
"openid": accessToken.openid
});
if(res.data != null){
final Map<String, dynamic> mapData = json.decode(res.data);
if(mapData.containsKey("errcode")){
return WechatLoginResponse(errorCode: WechatLoginErrorCode.getUserInfoError);
}
return WechatLoginResponse(errorCode: WechatLoginErrorCode.success, response: WechatResponse(
openid: mapData["openid"],
nickname: mapData["nickname"],
sex: mapData["sex"],
province: mapData["province"],
city: mapData["city"],
country: mapData["country"],
headimgurl: mapData["headimgurl"],
unionid: mapData["unionid"]
));
}
return WechatLoginResponse(errorCode: WechatLoginErrorCode.getUserInfoError);
}
return WechatLoginResponse(errorCode: accessToken.errorCode);
}
return WechatLoginResponse(errorCode: code.errorCode);
}