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)
@Copyright © cosmos 2019 all right reserved,powered by Gitbook修订时间: 2024-01-05 12:01:47

results matching ""

    No results matching ""