1. 一键登录SDK接入文档
1.1. 接入前准备
请按照运营商配置完成注册app信息以及开通一键登录功能。
1.2. 使用注意
使用一键登录功能需要打开手机流量
1.3. 工程配置
- 权限配置
接入SDK需要如下权限,将如下代码copy到主app的AndroidManifest.xml对应位置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- 最小支持版本
Android 5.0
- 添加maven
repositories {
mavenCentral()
}
- 添加工程依赖
implementation "com.immomo.cosmos.auth:authlib-noui:1.4.0.2"
- so架构 SDK目前提供了armeabi,armeabi-v7a,arm64-v8a,x86,x86_64架构,请在app/build.gradle文件中根据需要配置代码。在android/defaultConfig/结构下添加
ndk {
abiFilters "armeabi-v7a","armeabi","arm64-v8a","x86","x86_64"
}
- 混淆配置
-keep class com.cosmos.authlib.AuthManager {*;}
-keep class com.cosmos.authbase.ISPType{*;}
-keep class com.cosmos.authbase.UIConfig{*;}
-keep class com.cosmos.authbase.UIConfig.Builder{*;}
#移动
-dontwarn com.cmic.sso.sdk.**
-keep class com.cmic.sso.sdk.** {*;}
#电信
-keep class cn.com.chinatelecom.account.**{*;}
#联通
-dontwarn com.sdk.**
-keep class com.sdk.** { *;}
1.4. 功能接入
具体使用可以参考 demo
- 初始化
//CMCC_APP_ID、CMCC_APP_KEY分别为移动的appid和appkey
//CTCC_APP_ID、CTCC_APP_SECRET分别为电信的appid和appsecret
//CUCC_API_KEY、CUCC_PUBLIC_KEY分别为联通的apikey和publickey
val authManagerConfig = AuthManagerConfig.Builder()
.context(AppContext.getContext())
.appId(AppConfig.COSMOS_APP_ID)
.cmccAppId(CMCC_APP_ID).cmccAppKey(CMCC_APP_KEY)
.ctccAppId(CTCC_APP_ID).ctccAppKey(CTCC_APP_SECRET)
.cuccAppId(CUCC_API_KEY).cuccAppKey(CUCC_PUBLIC_KEY)
.logOpen(BuildConfig.DEBUG)
.build()
//返回运营商类别 {@link ISPType#TYPE_UNKNOW,ISPType#TYPE_CMCC,ISPType#TYPE_CTCC,ISPType#TYPE_CUCC}
val phoneType = AuthManager.getInstance().init(authManagerConfig)
- 取号或预取号
AuthManager.getInstance().offerNumber({result->
Log.e("duanqing", "offerNumber result: ${result.resultCode} ${result.success} ${result.securityphone}")
}, 3000)
- 登陆流程
建议授权成功后,使用AuthManager.getInstance().requestBodyMap数据发送到业务服务端,业务服务端再透传给一键登录服务端。当然也可以业务客户端与业务服务器自己定义传参。
AuthManager.getInstance().loginAuth(object : ITokenListener {
override fun onTokenResult(result: LoginResult?) {
if (result?.success == true) {
//参数如下:map["token"]、map["source"]、map["access_code"]、map["auth_code"]
val map = AuthManager.getInstance().requestBodyMap
//send map to business server
}
}
}, 3000)