Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
Sobot_module_Dev
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sobot_android
Sobot_module_Dev
Commits
71ed77b0
Commit
71ed77b0
authored
Apr 09, 2024
by
zhengnw@sobot.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common 1.6.8 登录方式调整
parent
626141c5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
158 additions
and
26 deletions
+158
-26
MainActivity.java
app/src/main/java/com/sobot/moduletest/MainActivity.java
+11
-11
build.gradle
sobot_common/build.gradle
+2
-2
sobot-common-publish-mavencentral.gradle
sobot_common/sobot-common-publish-mavencentral.gradle
+1
-3
SobotLoginTools.java
...src/main/java/com/sobot/common/login/SobotLoginTools.java
+144
-10
No files found.
app/src/main/java/com/sobot/moduletest/MainActivity.java
View file @
71ed77b0
...
...
@@ -219,7 +219,7 @@ public class MainActivity extends SobotBaseActivity {
map1
.
put
(
"from"
,
2
+
""
);
map1
.
put
(
"way"
,
"10"
);
map1
.
put
(
"ack"
,
"1"
);
map1
.
put
(
"version"
,
"3.3.1"
);
// SobotLoginTools.getInstance().doLogin(MainActivity.this, getSobotBaseContext(), true, "https://test-branche1.sobot.com/text", "https://test-branche1.sobot.com/text", "zhengnw@zhichi.com", "znw123456", map1, new SobotResultBlock() {
// @Override
// public void resultBolok(SobotResultCode code, String msg, Object obj) {
...
...
@@ -227,7 +227,7 @@ public class MainActivity extends SobotBaseActivity {
// SobotLogUtils.i(SobotLoginTools.getInstance().getAccessToken() + "");
// SobotLogUtils.i(SobotLoginTools.getInstance().getTempId());
// SobotLogUtils.i(SobotLoginTools.getInstance().getToken() + "");
//// SobotLoginTools.getInstance().logOut(MainActivity.this, "https://
api-c
.sobot.com/text", "zhengnw@zhichi.com", new SobotResultBlock() {
//// SobotLoginTools.getInstance().logOut(MainActivity.this, "https://
test-branche1
.sobot.com/text", "zhengnw@zhichi.com", new SobotResultBlock() {
//// @Override
//// public void resultBolok(SobotResultCode code, String msg, Object obj) {
////
...
...
@@ -236,15 +236,15 @@ public class MainActivity extends SobotBaseActivity {
// }
// });
SobotLoginTools
.
getInstance
().
loginWithAppkey
(
MainActivity
.
this
,
getSobotBaseContext
(),
true
,
"https://test-branche1.sobot.com/text"
,
"https://test
.sobot.com"
,
"zhengnw@zhichi.com"
,
"UaH4q8JHj708"
,
"615abf5432134e4992d4da2ba6f460db"
,
map1
,
new
SobotResultBlock
()
{
@Override
public
void
resultBolok
(
SobotResultCode
code
,
String
msg
,
Object
obj
)
{
SobotLoginTools
.
getInstance
().
checkExpiresToken
();
SobotLogUtils
.
i
(
SobotLoginTools
.
getInstance
().
getAccessToken
()
+
""
);
SobotLogUtils
.
i
(
SobotLoginTools
.
getInstance
().
getTempId
());
SobotLogUtils
.
i
(
SobotLoginTools
.
getInstance
().
getToken
()
+
""
);
}
});
// SobotLoginTools.getInstance().loginWithAppkey(MainActivity.this, getSobotBaseContext(), true, "https://test-branche1.sobot.com/text", "https://test-branche1
.sobot.com", "zhengnw@zhichi.com", "UaH4q8JHj708", "615abf5432134e4992d4da2ba6f460db", map1, new SobotResultBlock() {
//
@Override
//
public void resultBolok(SobotResultCode code, String msg, Object obj) {
//
SobotLoginTools.getInstance().checkExpiresToken();
//
SobotLogUtils.i(SobotLoginTools.getInstance().getAccessToken() + "");
//
SobotLogUtils.i(SobotLoginTools.getInstance().getTempId());
//
SobotLogUtils.i(SobotLoginTools.getInstance().getToken() + "");
//
}
//
});
// LoginUserEntity sa=new LoginUserEntity();
...
...
sobot_common/build.gradle
View file @
71ed77b0
...
...
@@ -11,7 +11,7 @@ android {
//这里就是打jar包
task
makeJar
(
type:
Copy
)
{
//删除旧的jar包
delete
'build/libs/sobot_common_x_1.6.
6
.jar'
delete
'build/libs/sobot_common_x_1.6.
8
.jar'
//原地址
from
(
'build/intermediates/packaged-classes/release/'
)
//导出jar包的地址
...
...
@@ -19,7 +19,7 @@ android {
//包含的jar包
include
(
'classes.jar'
)
//重命名jar包为mysdk
rename
(
'classes.jar'
,
'sobot_common_x_1.6.
6
.jar'
)
rename
(
'classes.jar'
,
'sobot_common_x_1.6.
8
.jar'
)
}
makeJar
.
dependsOn
(
build
)
}
...
...
sobot_common/sobot-common-publish-mavencentral.gradle
View file @
71ed77b0
...
...
@@ -12,12 +12,10 @@ task androidSourcesJar(type: Jar) {
ext
{
PUBLISH_GROUP_ID
=
"com.sobot.library"
//项目包名
PUBLISH_ARTIFACT_ID
=
'sobotcommon_x'
//项目名
PUBLISH_VERSION
=
'1.6.
6
'
//版本号
PUBLISH_VERSION
=
'1.6.
8
'
//版本号
}
ext
[
"signing.keyId"
]
=
''
ext
[
"signing.password"
]
=
''
ext
[
"signing.secretKeyRingFile"
]
=
''
...
...
sobot_common/src/main/java/com/sobot/common/login/SobotLoginTools.java
View file @
71ed77b0
...
...
@@ -211,7 +211,7 @@ public class SobotLoginTools {
*/
public
void
doLogin
(
final
Object
cancelTag
,
final
Context
mContext
,
final
boolean
isAppOrOnlineLogin
,
final
String
host
,
final
String
openApiHost
,
final
String
loginAcount
,
final
String
loginPwd
,
final
Map
<
String
,
Object
>
paramsMap
,
final
SobotResultBlock
resultBlock
)
{
if
(
SobotStringUtils
.
isEmpty
(
host
)
||
SobotStringUtils
.
isEmpty
(
openApiHost
))
{
SobotLogUtils
.
i
(
"域名不能为空"
);
SobotLogUtils
.
i
(
"
host 或者 openApiHost
域名不能为空"
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"域名不能为空"
,
getServiceInfo
());
}
...
...
@@ -225,7 +225,7 @@ public class SobotLoginTools {
return
;
}
final
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"
userEntity
"
,
loginAcount
);
params
.
put
(
"
loginUser
"
,
loginAcount
);
params
.
put
(
"loginPwd"
,
loginPwd
);
SobotHttpUtils
.
doPost
(
cancelTag
,
host
+
"/basic-login/serviceAppLogin/4"
,
8000
,
params
,
null
,
new
HttpBaseUtils
.
StringCallBack
()
{
@Override
...
...
@@ -342,9 +342,9 @@ public class SobotLoginTools {
* @param paramsMap 单独执行在线登录逻辑 参数
* @param resultBlock
*/
public
void
loginWithAppkey
(
final
Object
cancelTag
,
final
Context
mContext
,
final
boolean
isAppOrOnlineLogin
,
final
String
host
,
final
String
openApiHost
,
final
String
loginAcount
,
final
String
appkey
,
final
String
appId
,
final
Map
<
String
,
Object
>
paramsMap
,
final
SobotResultBlock
resultBlock
)
{
public
void
loginWithAppkey
(
final
Object
cancelTag
,
final
Context
mContext
,
final
boolean
isAppOrOnlineLogin
,
final
String
host
,
final
String
openApiHost
,
final
String
loginAcount
,
String
appkey
,
String
appId
,
final
Map
<
String
,
Object
>
paramsMap
,
final
SobotResultBlock
resultBlock
)
{
if
(
SobotStringUtils
.
isEmpty
(
host
)
||
SobotStringUtils
.
isEmpty
(
openApiHost
))
{
SobotLogUtils
.
i
(
"域名不能为空"
);
SobotLogUtils
.
i
(
"
host 或者 openApiHost
域名不能为空"
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"域名不能为空"
,
getServiceInfo
());
}
...
...
@@ -374,13 +374,13 @@ public class SobotLoginTools {
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"agent_email"
,
loginAcount
);
//获取 个人座席token
SobotHttpUtils
.
doPost
(
cancelTag
,
openApiHost
.
replace
(
"/text"
,
""
)
+
"/api/public/sso/5/login"
,
8000
,
params
,
headerMap
,
new
HttpBaseUtils
.
StringCallBack
()
{
SobotHttpUtils
.
doPost
ByJsonString
(
cancelTag
,
openApiHost
.
replace
(
"/text"
,
""
)
+
"/api/public/sso/5/login"
,
params
,
headerMap
,
new
HttpBaseUtils
.
StringCallBack
()
{
@Override
public
void
onResponse
(
String
response
)
{
TokenModel
result
=
SobotGsonUtil
.
jsonToBean
(
response
,
TokenModel
.
class
);
if
(
result
!=
null
&&
!
SobotStringUtils
.
isEmpty
(
result
.
getRet
_code
())
&&
"000000"
.
equals
(
result
.
getRet_code
())
&&
result
.
getItem
()
!=
null
&&
SobotStringUtils
.
isNoEmpty
(
result
.
getItem
().
getToken
()))
{
SobotCallBaseCode
result
=
SobotGsonUtil
.
jsonToBean
(
response
,
SobotCallBaseCode
.
class
);
if
(
result
!=
null
&&
!
SobotStringUtils
.
isEmpty
(
result
.
getRet
Code
())
&&
"000000"
.
equals
(
result
.
getRetCode
())
&&
!
SobotStringUtils
.
isEmpty
(
result
.
getItem
()))
{
final
long
login_time
=
System
.
currentTimeMillis
();
final
String
token
=
result
.
getItem
().
getToken
();
final
String
token
=
(
String
)
result
.
getItem
();
getuserEntityInfo
(
cancelTag
,
mContext
,
host
,
token
,
""
,
new
SobotResultBlock
()
{
@Override
public
void
resultBolok
(
SobotResultCode
code
,
String
msg
,
Object
obj
)
{
...
...
@@ -454,7 +454,7 @@ public class SobotLoginTools {
});
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
(
result
!=
null
&&
SobotStringUtils
.
isNoEmpty
(
result
.
getRet
_msg
()))
?
result
.
getRet_m
sg
()
:
"登录失败"
,
""
);
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
(
result
!=
null
&&
SobotStringUtils
.
isNoEmpty
(
result
.
getRet
Msg
()))
?
result
.
getRetM
sg
()
:
"登录失败"
,
""
);
}
}
}
...
...
@@ -492,6 +492,140 @@ public class SobotLoginTools {
});
}
/**
* 执行登录操作
* 1、通过账号密码登录获取token;2、根据token获取客服角色权限等信息;3、如果是呼叫V6或者电销,先获取AccessToken;4、再根据客服app或者客服SDK登录同时又买了在线产品判断是否执行在线操作逻辑
*
* @param cancelTag
* @param mContext
* @param isAppOrOnlineLogin true 客服app或者客服SDK登录,如果有在线产品,再单独执行在线登录逻辑
* @param host
* @param openApiHost
* @param loginAcount 登录账号
* @param token 公司token(参考文档:https://developer.zhichi.com/pages/4e87dc/)
* @param paramsMap 单独执行在线登录逻辑 参数
* @param resultBlock
*/
public
void
loginWithCompanyToken
(
final
Object
cancelTag
,
final
Context
mContext
,
final
boolean
isAppOrOnlineLogin
,
final
String
host
,
final
String
openApiHost
,
final
String
loginAcount
,
String
token
,
final
Map
<
String
,
Object
>
paramsMap
,
final
SobotResultBlock
resultBlock
)
{
if
(
SobotStringUtils
.
isEmpty
(
host
)
||
SobotStringUtils
.
isEmpty
(
openApiHost
))
{
SobotLogUtils
.
i
(
"host 或者 openApiHost域名不能为空"
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"域名不能为空"
,
getServiceInfo
());
}
return
;
}
if
(
isLogin
(
loginAcount
))
{
SobotLogUtils
.
i
(
"已经登录成功,不用重新登录"
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_SUCCEEDED
,
"已经登录成功"
,
getServiceInfo
());
}
return
;
}
Map
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"token"
,
token
);
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"agent_email"
,
loginAcount
);
//获取 个人座席token
SobotHttpUtils
.
doPostByJsonString
(
cancelTag
,
openApiHost
.
replace
(
"/text"
,
""
)
+
"/api/public/sso/5/login"
,
params
,
headerMap
,
new
HttpBaseUtils
.
StringCallBack
()
{
@Override
public
void
onResponse
(
String
response
)
{
SobotCallBaseCode
result
=
SobotGsonUtil
.
jsonToBean
(
response
,
SobotCallBaseCode
.
class
);
if
(
result
!=
null
&&
!
SobotStringUtils
.
isEmpty
(
result
.
getRetCode
())
&&
"000000"
.
equals
(
result
.
getRetCode
())
&&
!
SobotStringUtils
.
isEmpty
(
result
.
getItem
()))
{
final
long
login_time
=
System
.
currentTimeMillis
();
final
String
token
=
(
String
)
result
.
getItem
();
getuserEntityInfo
(
cancelTag
,
mContext
,
host
,
token
,
""
,
new
SobotResultBlock
()
{
@Override
public
void
resultBolok
(
SobotResultCode
code
,
String
msg
,
Object
obj
)
{
if
(
code
==
SobotResultCode
.
CODE_SUCCEEDED
)
{
SobotServiceInfoModel
serviceInfoModel
=
(
SobotServiceInfoModel
)
obj
;
if
(
serviceInfoModel
!=
null
)
{
serviceInfoModel
.
setLogin_time
(
login_time
);
serviceInfoModel
.
setToken
(
token
);
serviceInfoModel
.
setLoginAccount
(
loginAcount
);
if
((
serviceInfoModel
.
getCallV6Flag
()
==
1
||
SobotPermissionManager
.
isHasNewPermission
(
SobotPermissionManager
.
SCC
))
&&
!
SobotStringUtils
.
isEmpty
(
openApiHost
))
{
//如果是v6呼叫
String
tempHost
=
openApiHost
;
if
(
tempHost
.
contains
(
"/text"
))
{
tempHost
=
tempHost
.
replace
(
"/text"
,
""
);
}
final
SobotServiceInfoModel
tempServiceInfoModel
=
serviceInfoModel
;
doAccessToken
(
cancelTag
,
tempHost
,
serviceInfoModel
.
getToken
(),
new
SobotResultBlock
()
{
@Override
public
void
resultBolok
(
SobotResultCode
code
,
String
msg
,
Object
obj
)
{
if
(
code
==
SobotResultCode
.
CODE_SUCCEEDED
)
{
SobotServiceInfoModel
tempUserEntity
=
tempServiceInfoModel
;
if
(
obj
!=
null
&&
obj
instanceof
String
&&
SobotStringUtils
.
isNoEmpty
((
String
)
obj
))
{
String
accessToken
=
(
String
)
obj
;
tempUserEntity
.
setAccess_token
(
accessToken
);
//判断是否有对话功能
if
(
SobotPermissionManager
.
checkPermission
(
SobotPermissionApi
.
USER_PERMISSION_TYPE_TALK
)
&&
isAppOrOnlineLogin
)
{
doOnline
(
cancelTag
,
mContext
,
host
,
paramsMap
,
tempUserEntity
,
resultBlock
);
}
else
{
setServiceInfo
(
tempUserEntity
);
SobotSharedPreferencesUtil
.
getInstance
(
mContext
).
put
(
SobotLoginConstant
.
SOBOT_LOGIN_USER_INFO
,
tempUserEntity
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_SUCCEEDED
,
"登录成功"
,
tempUserEntity
);
}
}
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"登录失败 accessToken获取失败"
,
null
);
}
}
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"登录失败"
,
null
);
}
}
}
});
}
else
{
//判断是否有对话功能
if
(
SobotPermissionManager
.
checkPermission
(
SobotPermissionApi
.
USER_PERMISSION_TYPE_TALK
)
&&
isAppOrOnlineLogin
)
{
doOnline
(
cancelTag
,
mContext
,
host
,
paramsMap
,
serviceInfoModel
,
resultBlock
);
}
else
{
setServiceInfo
(
serviceInfoModel
);
SobotSharedPreferencesUtil
.
getInstance
(
mContext
).
put
(
SobotLoginConstant
.
SOBOT_LOGIN_USER_INFO
,
serviceInfoModel
);
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_SUCCEEDED
,
"登录成功"
,
serviceInfoModel
);
}
}
}
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
"登录失败"
,
null
);
}
}
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
SobotStringUtils
.
isNoEmpty
(
msg
)
?
msg
:
"登录失败"
,
""
);
}
}
}
});
}
else
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
(
result
!=
null
&&
SobotStringUtils
.
isNoEmpty
(
result
.
getRetMsg
()))
?
result
.
getRetMsg
()
:
"登录失败"
,
""
);
}
}
}
@Override
public
void
onError
(
Exception
e
,
String
msg
,
int
responseCode
)
{
if
(
resultBlock
!=
null
)
{
resultBlock
.
resultBolok
(
SobotResultCode
.
CODE_FAILED
,
msg
,
null
);
}
}
@Override
public
void
inProgress
(
int
progress
)
{
}
});
}
// sdk 执行退出登录
public
void
logOut
(
Object
cancelTag
,
String
host
,
String
loginAcount
,
final
SobotResultBlock
resultBlock
)
{
if
(
SobotStringUtils
.
isEmpty
(
loginAcount
))
{
...
...
@@ -507,7 +641,7 @@ public class SobotLoginTools {
return
;
}
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"
userEntity
"
,
loginAcount
);
params
.
put
(
"
loginUser
"
,
loginAcount
);
Map
<
String
,
String
>
headerParams
=
new
HashMap
<>();
headerParams
.
put
(
"temp-id"
,
getToken
());
headerParams
.
put
(
"from"
,
2
+
""
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment