[3.4.0] add auth logic after token got
This commit is contained in:
@@ -21,6 +21,8 @@ import com.mogo.commons.network.NetConfigUtils
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_INIT
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_AUTH_FAILED
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_AUTH_OK
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_TOKEN
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_RECONNECT
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_HTTP_DNS_ERROR_REASON
|
||||
@@ -28,12 +30,12 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.startup.stageone.secret.IPassportSecret
|
||||
import com.mogo.eagle.core.function.startup.stageone.secret.PassPortSecret
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAIN
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
@@ -218,7 +220,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
CallerLogger.d("$M_MAIN$TAG", "onTokenGot token : $token , sn :$sn")
|
||||
CallerCloudListenerManager.invokeCloudTokenGot(token, sn)
|
||||
// 异步初始化NetConfig
|
||||
asyncInit()
|
||||
asyncInit(sn)
|
||||
startSocketService(sn)
|
||||
// 开启每5s/次定位上报
|
||||
uploadLocPerFiveSecond()
|
||||
@@ -236,9 +238,9 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
/**
|
||||
* 异步初始化
|
||||
*/
|
||||
private fun asyncInit() {
|
||||
private fun asyncInit(sn: String) {
|
||||
ThreadPoolService.execute {
|
||||
//初始化网络配置
|
||||
// 初始化网络配置
|
||||
NetConfigUtils.init()
|
||||
// 加入启动统计
|
||||
val mStartParams: HashMap<String, Any> = HashMap()
|
||||
@@ -247,6 +249,56 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
mStartParams["app_flavor"] = DebugConfig.getProductFlavor()
|
||||
mStartParams["app_identity_mode"] = FunctionBuildConfig.appIdentityMode
|
||||
MogoAnalyticUtils.track("app_start_time", mStartParams)
|
||||
|
||||
context?.let {
|
||||
val authStatus = SharedPrefsMgr.getInstance(it).getBoolean("passportAuth", false)
|
||||
if (authStatus) {
|
||||
// clientConfig设置auth值,并带入header
|
||||
clientConfig.authPubKey = SharedPrefsMgr.getInstance(it)
|
||||
.getString("passportAuthKey", "")
|
||||
return@let
|
||||
}
|
||||
// 安全校验
|
||||
try {
|
||||
PassPortSecret.getInstance().init(sn, it.filesDir.path, object :
|
||||
IPassportSecret {
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = CHAIN_TYPE_INIT_STATUS,
|
||||
linkCode = CHAIN_SOURCE_CLOUD,
|
||||
nodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_AUTH_OK,
|
||||
paramIndexes = [0]
|
||||
)
|
||||
override fun onSuccess(secretKey: String) {
|
||||
CallerLogger.d(
|
||||
"$M_MAIN$TAG",
|
||||
"onSuccess secretKey:$secretKey , thread:${Thread.currentThread().name}"
|
||||
)
|
||||
clientConfig.authPubKey = secretKey
|
||||
SharedPrefsMgr.getInstance(it).putString("passportAuthKey", secretKey)
|
||||
SharedPrefsMgr.getInstance(it).putBoolean("passportAuth", true)
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = CHAIN_TYPE_INIT_STATUS,
|
||||
linkCode = CHAIN_SOURCE_CLOUD,
|
||||
nodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_AUTH_FAILED,
|
||||
paramIndexes = [0, 1]
|
||||
)
|
||||
override fun onFailed(errorCode: Int, errorMsg: String) {
|
||||
logError(
|
||||
getPrReason(
|
||||
"PassPortSecret-onFailed , errorCode:$errorCode" +
|
||||
",errorMsg:$errorMsg
|
||||
)
|
||||
)
|
||||
}
|
||||
})
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,7 +372,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
CallerLogger.e("$M_MAIN$TAG", "pr:$pr")
|
||||
}
|
||||
|
||||
//todo 归一处理
|
||||
// 归一处理
|
||||
private fun getPrReason(msg: String): String {
|
||||
val map = hashMapOf<String, Any>()
|
||||
map["lat"] =
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.mogo.eagle.core.function.startup.stageone.secret;
|
||||
|
||||
public interface IPassportSecret {
|
||||
|
||||
void onSuccess(String secretKey);
|
||||
|
||||
void onFailed(int errorCode, String errorMsg);
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mogo.eagle.core.function.startup.stageone.secret;
|
||||
|
||||
import constant.ErrorCode;
|
||||
import domain.Passport;
|
||||
import service.PassportService;
|
||||
|
||||
public class PassPortSecret {
|
||||
|
||||
private PassPortSecret() {
|
||||
}
|
||||
|
||||
private static final class Holder {
|
||||
private static final PassPortSecret secret = new PassPortSecret();
|
||||
}
|
||||
|
||||
public static PassPortSecret getInstance() {
|
||||
return Holder.secret;
|
||||
}
|
||||
|
||||
private IPassportSecret secretCB;
|
||||
|
||||
public void init(String deviceId, String path, IPassportSecret secretCB) {
|
||||
if (this.secretCB != null) {
|
||||
return;
|
||||
}
|
||||
this.secretCB = secretCB;
|
||||
PassportService passportService = new PassportService();
|
||||
domain.R<Passport> r = initLow(passportService, deviceId, path);
|
||||
if (r.getCode() != ErrorCode.OK.getCode()) {
|
||||
secretCB.onFailed(r.getCode(), r.getMsg());
|
||||
}
|
||||
Passport passport = (Passport) r.getData();
|
||||
domain.R<String> res = passportService.deviceActive(passport);
|
||||
if (res.getCode() != ErrorCode.OK.getCode()) {
|
||||
secretCB.onFailed(res.getCode(), res.getMsg());
|
||||
}
|
||||
String secretKey = res.getData();
|
||||
secretCB.onSuccess(secretKey);
|
||||
}
|
||||
|
||||
private static domain.R<Passport> initLow(PassportService passportService, String deviceId, String path) {
|
||||
return passportService.init(Passport.builder().type(1)
|
||||
.deviceActive("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/active")
|
||||
.deviceRefresh("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/refresh")
|
||||
.deviceAuth("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/auth")
|
||||
.productId("10019")
|
||||
.productSecret("5cbcdc2240fa4104a70f28cdbe5ca69b")
|
||||
.sn(deviceId)
|
||||
.certPath(path).build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user