ref |> 对接华为账号登录接口
Signed-off-by: xugenyuan <xugenyuan@wondertek.com.cn>
Showing
3 changed files
with
112 additions
and
30 deletions
| @@ -82,6 +82,30 @@ export class LoginModel { | @@ -82,6 +82,30 @@ export class LoginModel { | ||
| 82 | }) | 82 | }) |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | + // loginType 0:手机号密码 2:手机号登录 3:QQ 4:微信 5:微博 6:APPLEID 7:手机号一键登录8:账号+密码 9:华为一键登录 | ||
| 86 | + thirdPartLogin(loginType: number, otherParams: Record<string, string|number>) { | ||
| 87 | + otherParams['loginType'] = loginType | ||
| 88 | + otherParams['deviceId'] = HttpUtils.getDeviceId() | ||
| 89 | + | ||
| 90 | + return new Promise<LoginBean>((success, fail) => { | ||
| 91 | + HttpRequest.post<ResponseDTO<LoginBean>>(HttpUrlUtils.getAppLoginUrl(), otherParams).then((data: ResponseDTO<LoginBean>) => { | ||
| 92 | + Logger.debug("LoginViewModel:success2 ", data.message) | ||
| 93 | + if (!data) { | ||
| 94 | + fail("数据为空") | ||
| 95 | + return | ||
| 96 | + } | ||
| 97 | + if (!data.data||data.code != 0) { | ||
| 98 | + fail(data.message) | ||
| 99 | + return | ||
| 100 | + } | ||
| 101 | + success(data.data) | ||
| 102 | + }, (error: Error) => { | ||
| 103 | + fail(error.message) | ||
| 104 | + Logger.debug("LoginViewModel:error2 ", error.toString()) | ||
| 105 | + }) | ||
| 106 | + }) | ||
| 107 | + } | ||
| 108 | + | ||
| 85 | // {"password":"523acd319228efde34e8a30268ee8ca5e4fc421d72affa531676e1765940d22c","phone":"13625644528","loginType":0,"oldPassword":"BA5FD74F827AF9B271FE17CADC489C36","deviceId":"60da5af6-9c59-3566-8622-8c6c00710994"} | 109 | // {"password":"523acd319228efde34e8a30268ee8ca5e4fc421d72affa531676e1765940d22c","phone":"13625644528","loginType":0,"oldPassword":"BA5FD74F827AF9B271FE17CADC489C36","deviceId":"60da5af6-9c59-3566-8622-8c6c00710994"} |
| 86 | appLoginByPassword(phone: string, loginType: number, password: string, oldPassword: string) { | 110 | appLoginByPassword(phone: string, loginType: number, password: string, oldPassword: string) { |
| 87 | let bean: Record<string, string | number> = {}; | 111 | let bean: Record<string, string | number> = {}; |
| @@ -47,15 +47,18 @@ export class LoginViewModel { | @@ -47,15 +47,18 @@ export class LoginViewModel { | ||
| 47 | 47 | ||
| 48 | return new Promise<LoginBean>((success, fail) => { | 48 | return new Promise<LoginBean>((success, fail) => { |
| 49 | this.loginModel.appLogin(phone, loginType, verificationCode).then((data: LoginBean) => { | 49 | this.loginModel.appLogin(phone, loginType, verificationCode).then((data: LoginBean) => { |
| 50 | - SPHelper.default.saveSync(SpConstants.USER_FIRST_MARK, data.firstMark) | ||
| 51 | - SPHelper.default.saveSync(SpConstants.USER_ID, data.id) | ||
| 52 | - SPHelper.default.saveSync(SpConstants.USER_JWT_TOKEN, data.jwtToken) | ||
| 53 | - SPHelper.default.saveSync(SpConstants.USER_LONG_TIME_NO_LOGIN_MARK, data.longTimeNoLoginMark) | ||
| 54 | - SPHelper.default.saveSync(SpConstants.USER_REFRESH_TOKEN, data.refreshToken) | ||
| 55 | - SPHelper.default.saveSync(SpConstants.USER_STATUS, data.status) | ||
| 56 | - SPHelper.default.saveSync(SpConstants.USER_Type, data.userType) | ||
| 57 | - SPHelper.default.saveSync(SpConstants.USER_NAME, data.userName) | ||
| 58 | - EmitterUtils.sendEmptyEvent(EmitterEventId.LOGIN_SUCCESS) | 50 | + this.dealWithLoginSuccess(data) |
| 51 | + success(data) | ||
| 52 | + }).catch((error:string) => { | ||
| 53 | + fail(error) | ||
| 54 | + }) | ||
| 55 | + }) | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + huaweiOneKeyLogin(authCode: string) { | ||
| 59 | + return new Promise<LoginBean>((success, fail) => { | ||
| 60 | + this.loginModel.thirdPartLogin(9, {"idToken": authCode}).then((data: LoginBean) => { | ||
| 61 | + this.dealWithLoginSuccess(data) | ||
| 59 | success(data) | 62 | success(data) |
| 60 | }).catch((error:string) => { | 63 | }).catch((error:string) => { |
| 61 | fail(error) | 64 | fail(error) |
| @@ -63,6 +66,19 @@ export class LoginViewModel { | @@ -63,6 +66,19 @@ export class LoginViewModel { | ||
| 63 | }) | 66 | }) |
| 64 | } | 67 | } |
| 65 | 68 | ||
| 69 | + //TODO: 这里要整体改掉 | ||
| 70 | + dealWithLoginSuccess(data: LoginBean) { | ||
| 71 | + SPHelper.default.saveSync(SpConstants.USER_FIRST_MARK, data.firstMark) | ||
| 72 | + SPHelper.default.saveSync(SpConstants.USER_ID, data.id) | ||
| 73 | + SPHelper.default.saveSync(SpConstants.USER_JWT_TOKEN, data.jwtToken) | ||
| 74 | + SPHelper.default.saveSync(SpConstants.USER_LONG_TIME_NO_LOGIN_MARK, data.longTimeNoLoginMark) | ||
| 75 | + SPHelper.default.saveSync(SpConstants.USER_REFRESH_TOKEN, data.refreshToken) | ||
| 76 | + SPHelper.default.saveSync(SpConstants.USER_STATUS, data.status) | ||
| 77 | + SPHelper.default.saveSync(SpConstants.USER_Type, data.userType) | ||
| 78 | + SPHelper.default.saveSync(SpConstants.USER_NAME, data.userName) | ||
| 79 | + EmitterUtils.sendEmptyEvent(EmitterEventId.LOGIN_SUCCESS) | ||
| 80 | + } | ||
| 81 | + | ||
| 66 | async appLoginByPassword(phone: string, loginType: number, password: string, oldPassword: string) { | 82 | async appLoginByPassword(phone: string, loginType: number, password: string, oldPassword: string) { |
| 67 | let newLoginType: number | 83 | let newLoginType: number |
| 68 | let isPhone = this.verifyIsPhoneNumber(phone) | 84 | let isPhone = this.verifyIsPhoneNumber(phone) |
| @@ -75,15 +91,7 @@ export class LoginViewModel { | @@ -75,15 +91,7 @@ export class LoginViewModel { | ||
| 75 | let passwordNew = await this.doMd(password) | 91 | let passwordNew = await this.doMd(password) |
| 76 | Logger.debug(TAG, "PASSWORD:" + passwordNew) | 92 | Logger.debug(TAG, "PASSWORD:" + passwordNew) |
| 77 | this.loginModel.appLoginByPassword(phone, newLoginType, passwordNew, oldPassword).then((data: LoginBean) => { | 93 | this.loginModel.appLoginByPassword(phone, newLoginType, passwordNew, oldPassword).then((data: LoginBean) => { |
| 78 | - SPHelper.default.saveSync(SpConstants.USER_FIRST_MARK, data.firstMark) | ||
| 79 | - SPHelper.default.saveSync(SpConstants.USER_ID, data.id) | ||
| 80 | - SPHelper.default.saveSync(SpConstants.USER_JWT_TOKEN, data.jwtToken) | ||
| 81 | - SPHelper.default.saveSync(SpConstants.USER_LONG_TIME_NO_LOGIN_MARK, data.longTimeNoLoginMark) | ||
| 82 | - SPHelper.default.saveSync(SpConstants.USER_REFRESH_TOKEN, data.refreshToken) | ||
| 83 | - SPHelper.default.saveSync(SpConstants.USER_STATUS, data.status) | ||
| 84 | - SPHelper.default.saveSync(SpConstants.USER_Type, data.userType) | ||
| 85 | - SPHelper.default.saveSync(SpConstants.USER_NAME, data.userName) | ||
| 86 | - EmitterUtils.sendEmptyEvent(EmitterEventId.LOGIN_SUCCESS) | 94 | + this.dealWithLoginSuccess(data) |
| 87 | success(data) | 95 | success(data) |
| 88 | }).catch((value: string) => { | 96 | }).catch((value: string) => { |
| 89 | fail(value) | 97 | fail(value) |
| @@ -3,13 +3,30 @@ import { Params } from 'wdBean/Index' | @@ -3,13 +3,30 @@ import { Params } from 'wdBean/Index' | ||
| 3 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' | 3 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' |
| 4 | import HuaweiAuth from '../../utils/HuaweiAuth' | 4 | import HuaweiAuth from '../../utils/HuaweiAuth' |
| 5 | import { BusinessError } from '@kit.BasicServicesKit' | 5 | import { BusinessError } from '@kit.BasicServicesKit' |
| 6 | -import { ToastUtils } from 'wdKit/Index' | 6 | +import { Logger, ToastUtils, CustomToast, EmitterUtils, EmitterEventId } from 'wdKit/Index' |
| 7 | +import { LoginViewModel } from './LoginViewModel' | ||
| 8 | +import {InterestsHobbiesModel} from '../../../../../../../products/phone/src/main/ets/pages/viewModel/InterestsHobbiesModel' | ||
| 9 | + | ||
| 10 | +const TAG = "OneKeyLoginPage" | ||
| 7 | 11 | ||
| 8 | @Entry | 12 | @Entry |
| 9 | @Component | 13 | @Component |
| 10 | struct OneKeyLoginPage { | 14 | struct OneKeyLoginPage { |
| 11 | anonymousPhone: string = '' | 15 | anonymousPhone: string = '' |
| 12 | @State agreeProtocol: boolean = false | 16 | @State agreeProtocol: boolean = false |
| 17 | + viewModel: LoginViewModel = new LoginViewModel() | ||
| 18 | + @State toastText:string = "" | ||
| 19 | + dialogToast: CustomDialogController = new CustomDialogController({ | ||
| 20 | + builder: CustomToast({ | ||
| 21 | + msg: this.toastText, | ||
| 22 | + }), | ||
| 23 | + autoCancel: false, | ||
| 24 | + alignment: DialogAlignment.Center, | ||
| 25 | + offset: { dx: 0, dy: -20 }, | ||
| 26 | + gridCount: 1, | ||
| 27 | + customStyle: true, | ||
| 28 | + maskColor:"#00000000" | ||
| 29 | + }) | ||
| 13 | 30 | ||
| 14 | aboutToAppear(): void { | 31 | aboutToAppear(): void { |
| 15 | this.anonymousPhone = HuaweiAuth.sharedInstance().anonymousPhone||"" | 32 | this.anonymousPhone = HuaweiAuth.sharedInstance().anonymousPhone||"" |
| @@ -44,17 +61,7 @@ struct OneKeyLoginPage { | @@ -44,17 +61,7 @@ struct OneKeyLoginPage { | ||
| 44 | if (!this.agreeProtocol) { | 61 | if (!this.agreeProtocol) { |
| 45 | return | 62 | return |
| 46 | } | 63 | } |
| 47 | - HuaweiAuth.sharedInstance().oneKeyLogin().then((authorizeCode) => { | ||
| 48 | - //TODO: 调用服务端接口登录 | ||
| 49 | - | ||
| 50 | - ToastUtils.shortToast("获取到授权code: " + authorizeCode + ",由于需要后台接口支持,暂时先跳转其他登录方式") | ||
| 51 | - setTimeout(() => { | ||
| 52 | - router.replaceUrl({url: WDRouterPage.loginPage.url()}) | ||
| 53 | - }, 3000) | ||
| 54 | - | ||
| 55 | - }).catch((error: BusinessError) => { | ||
| 56 | - | ||
| 57 | - }) | 64 | + this.requestLogin() |
| 58 | }) | 65 | }) |
| 59 | } | 66 | } |
| 60 | .padding({ left: 25, right: 25 }) | 67 | .padding({ left: 25, right: 25 }) |
| @@ -113,4 +120,47 @@ struct OneKeyLoginPage { | @@ -113,4 +120,47 @@ struct OneKeyLoginPage { | ||
| 113 | }.margin({ top: 15, right: 15 }) | 120 | }.margin({ top: 15, right: 15 }) |
| 114 | .width("100%") | 121 | .width("100%") |
| 115 | } | 122 | } |
| 123 | + | ||
| 124 | + async requestLogin() { | ||
| 125 | + try { | ||
| 126 | + let authorizeCode = await HuaweiAuth.sharedInstance().oneKeyLogin() | ||
| 127 | + | ||
| 128 | + let data = await this.viewModel.huaweiOneKeyLogin(authorizeCode) | ||
| 129 | + | ||
| 130 | + Logger.debug(TAG, "requestLogin: " + data.jwtToken) | ||
| 131 | + this.showToastTip('登录成功') | ||
| 132 | + | ||
| 133 | + ///同步兴趣tag | ||
| 134 | + let interestsModel = new InterestsHobbiesModel() | ||
| 135 | + interestsModel.updateInterests() | ||
| 136 | + this.queryUserDetail() | ||
| 137 | + EmitterUtils.sendEvent(EmitterEventId.PEOPLE_SHIP_ATTENTION) | ||
| 138 | + | ||
| 139 | + } catch (error) { | ||
| 140 | + if (typeof error == "string") { | ||
| 141 | + this.showToastTip(error) | ||
| 142 | + } else { | ||
| 143 | + (error as BusinessError) | ||
| 144 | + this.showToastTip("登录失败") | ||
| 145 | + } | ||
| 146 | + } | ||
| 147 | + } | ||
| 148 | + | ||
| 149 | + showToastTip(msg:string){ | ||
| 150 | + this.toastText = msg | ||
| 151 | + this.dialogToast.open() | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + queryUserDetail(){ | ||
| 155 | + this.viewModel.queryUserDetail().then(()=>{ | ||
| 156 | + router.back({ | ||
| 157 | + url: `${WDRouterPage.getBundleInfo()}` | ||
| 158 | + } | ||
| 159 | + ) | ||
| 160 | + }).catch(()=>{ | ||
| 161 | + router.back({ | ||
| 162 | + url: `${WDRouterPage.getBundleInfo()}` | ||
| 163 | + }) | ||
| 164 | + }) | ||
| 165 | + } | ||
| 116 | } | 166 | } |
-
Please register or login to post a comment