а√在线中文网新版地址在线,播五月开心婷婷综合,午夜国产精品视频在线,√8天堂资源地址中文在线,80岁色老头oldmanvideos

注冊(cè)送短信

Android SDK 接入指南


概覽


此文檔為Andorid一鍵登陸SDK1.0.1版本開發(fā)文檔。點(diǎn)擊下載SDK以及Demo



名詞解釋


  • 初始化:一次有效,通過(guò)getLoginAccessCode方法完成,會(huì)進(jìn)??絡(luò)流量請(qǐng)求。預(yù)取號(hào)失敗返回錯(cuò)誤信息,業(yè)務(wù)方可跳轉(zhuǎn)到其他登錄方式;預(yù)取號(hào)成功后,在回調(diào)函數(shù)中返回已開啟蜂窩流量的運(yùn)營(yíng)商類型,脫敏手機(jī)號(hào)(188**8888)和accessCode,可縮短拉起登錄授權(quán)頁(yè)面的時(shí)間。建議在判斷當(dāng)前?戶處于未登錄狀態(tài),且在執(zhí)行拉起登錄授權(quán)頁(yè)前調(diào)用(1-3s),已登錄狀態(tài)?戶請(qǐng)不要調(diào)?該?法。
  • Token:?來(lái)和后臺(tái)置換完整?機(jī)號(hào)(18888888888)。?次有效。通過(guò)getLoginToken方法獲取。必須在授權(quán)頁(yè)(見(jiàn)授權(quán)頁(yè)規(guī)范)中調(diào)用。Token是業(yè)務(wù)方實(shí)現(xiàn)登錄的必備參數(shù)。
  • 授權(quán)頁(yè):取token必須在授權(quán)頁(yè)中調(diào)用,各運(yùn)營(yíng)商對(duì)授權(quán)頁(yè)樣式要求有所不同(見(jiàn)授權(quán)頁(yè)規(guī)范)。


一鍵登錄能力時(shí)序表



準(zhǔn)備工作


前置條件:

  • 本SDK必須打開蜂窩數(shù)據(jù)流量并且手機(jī)操作系統(tǒng)給予應(yīng)用蜂窩數(shù)據(jù)權(quán)限才能使用
  • ?持中國(guó)移動(dòng)3/4G、聯(lián)通3/4G、電信4G的取號(hào)能?,在3G?絡(luò)下時(shí)延會(huì)更?
  • ?持單數(shù)據(jù)?絡(luò)/數(shù)據(jù)?絡(luò)與WiFi?絡(luò)雙開,不?持單WiFi?絡(luò)
  • 對(duì)于雙卡?機(jī),只對(duì)當(dāng)前流量卡取號(hào),雙卡均未開數(shù)據(jù)流量SDK將會(huì)返回錯(cuò)誤碼
  • SDK請(qǐng)求過(guò)程需要消耗用戶少量數(shù)據(jù)流量(國(guó)外漫游時(shí)可能會(huì)產(chǎn)生額外的費(fèi)用)
  • 一鍵免密登錄接口必須在授權(quán)頁(yè)面中調(diào)用


接入流程



前往(SUBMAIL控制臺(tái))申請(qǐng)appid和appkey,并按要求填寫申請(qǐng)所需資料。



開發(fā)流程


1.下載SDK以及demo代碼

請(qǐng)?jiān)谀~戶一鍵登錄控制臺(tái)下下載SDK包以及代碼示列。


2.搭建開發(fā)環(huán)境

  • Android Studio版本需要使用3.0以上
  • 集成 'quick_login_android_5.9.5 submail_onelogin 到項(xiàng)目的libs目錄下,并在gradle中做以下配置:
compileOptions { 
 sourceCompatibility = '1.8' 
 targetCompatibility = '1.8'
 }
                                                    
repositories {
 flatDir { dirs 'libs' }
}
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'quick_login_android_5.9.5', ext: 'aar')
    implementation(name: 'submail_onelogin', ext: 'aar')
    implementation 'com.alibaba:fastjson:1.2.58'
    implementation 'com.squareup.okhttp3:okhttp:3.6.0'
  • 在gradle中配置signingConfig簽名信息,并在編譯apk時(shí),使用該簽名。
    將app包名和簽名提供給SUBMAIL審核。
    平臺(tái)需要校驗(yàn)app包名和簽名,請(qǐng)務(wù)必提供準(zhǔn)確信息。信息更改后,需要重新向SUBMAIL重新申請(qǐng)應(yīng)用能力。
    可使用命令:keytool -v -list -keystore 你的應(yīng)用簽名文件.jks獲取簽名的MD5信息。
  • 在AndroidManifest.xml配置必要的權(quán)限支持,并在代碼中做動(dòng)態(tài)權(quán)限申請(qǐng)。
<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" />
  • 配置Activity
 <activity 
   android:name="com.cmic.gen.sdk.view.GenLoginAuthActivity" 
   android:configChanges="orientation|keyboardHidden|screenSize" 
   android:screenOrientation="unspecified" 
   android:launchMode="singleTop"> 
 </activity>
  • 配置混淆策略
 -dontwarn com.cmic.gen.sdk.** 
 -keep class com.cmic.gen.sdk.**{*;}
 -keep class com.submail.onelogin.sdk.client.SubSDK {*;}
-keep class com.submail.onelogin.sdk.client.SubCallback {*;}
-keep class com.submail.onelogin.sdk.model.*{*;}
-keep class com.submail.onelogin.sdk.utils.Logger{*;}
-keep class com.submail.onelogin.sdk.utils.CallbackUtil{*;}




SDK方法及說(shuō)明


初始化請(qǐng)求(init方法)

本方法用于初始化SDK,SDK完成網(wǎng)絡(luò)請(qǐng)求并根據(jù)運(yùn)營(yíng)商類型自動(dòng)選擇配置信息。


方法示列
public static void init(Context context, String appid, String appkey, SubCallback subCallback)


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
contextContext上下文
appidStringSubmail一鍵登錄應(yīng)用id
appkeyStringSubmail一鍵登錄應(yīng)用秘鑰
callbackSubSDK.SubCallbackSubCallback為回調(diào)監(jiān)聽(tīng)器,需要調(diào)用者自己實(shí)現(xiàn);void onResult(boolean isSuccess, String result)是該接口中唯一的抽象方法


響應(yīng)參數(shù)

SubCallback 響應(yīng)參數(shù):

參數(shù)類型說(shuō)明
isSuccesboolean是否初始化成功
resultString初始化結(jié)果描述


代碼示列
 SubSDK.init(mCtx, appid, appkey, new SubCallback() {
                    @Override
                    public void onResult(boolean var1, final String var2) {
                        Logger.d("測(cè)試結(jié)果:", var1 + "," + var2);
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(mCtx, var2, Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                });


獲取AccessCode(getLoginAccessCode方法)


方法原型
public static void getLoginAccessCode(Context ctx, SubCallback callback) 


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
contextContext上下文
callbackSubSDK.SubCallbackSubCallback為回調(diào)監(jiān)聽(tīng)器,需要調(diào)用者自己實(shí)現(xiàn);void onResult(boolean isSuccess, String result)是該接口中唯一的抽象方法


響應(yīng)參數(shù)

SubCallback 響應(yīng)參數(shù):

參數(shù)類型說(shuō)明
isSuccesboolean是否獲取accesscode成功
resultString獲取accesscode結(jié)果描述


callback成功時(shí)返回參數(shù):

   {
      "accessCode":"nmf12db627f7a44f268d56813bfdf89ee4",
      "expiredTime":"3600",
      "operator":3,
      "others":{"gwAuth":"1306","reqId":"24bd961b4f47380bb5cbd5cded57a041"},
      "phone":"199****5361"
   }



代碼示列
  SubSDK.getLoginAccessCode(mCtx, new SubCallback() {
                    @Override
                    public void onResult(boolean isSuccess, String result) {
                        if(isSuccess){
                            //獲取AccessCode成功處理邏輯,需要客戶自行實(shí)現(xiàn)
                        }
                       
                    }
                });


獲取Token(getLoginToken方法)


方法原型
public static void getLoginToken(Context ctx, GenAuthThemeConfig genAuthThemeConfig, SubCallback callback) 


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
contextContext上下文
genAuthThemeConfiggenAuthThemeConfig移動(dòng)授權(quán)頁(yè)配置參數(shù)
callbackSubSDK.SubCallbackSubCallback為回調(diào)監(jiān)聽(tīng)器,需要調(diào)用者自己實(shí)現(xiàn);void onResult(boolean isSuccess, String result)是該接口中唯一的抽象方法


響應(yīng)參數(shù)

SubCallback 響應(yīng)參數(shù):

參數(shù)類型說(shuō)明
isSuccesboolean是否獲取token成功
resultString獲取token結(jié)果描述


callback成功時(shí)返回參數(shù):

  {
      "operator":3,
      "others":{
                "phone":
                "199****5361",
                "gwAuth":"5079",
                "expiredTime":"3600",
                "reqId":"c8 bf5081e5ef3b6492a46c139e540937"
               },
      "token":"nm8eff132bb0414c63a08390cb976c2287"
      
  }



代碼示列
      public void getLoginToken(){
            SubSDK.getLoginToken(mCtx, loginPageConfig,new SubCallback() {
                        @Override
                        public void onResult(boolean isSuccess, String result) {
                            if(isSuccess){
                            //獲取token成功處理邏輯,需要客戶自行實(shí)現(xiàn)
                          }
                        }
                    });
        }


獲取手機(jī)號(hào)碼

 為了提高安全性,不建議在app端直接獲取手機(jī)號(hào)碼明文,需要開發(fā)者自行實(shí)現(xiàn)。通過(guò)獲取的token值對(duì)接獲取手機(jī)號(hào)碼API,即可以換取手機(jī)號(hào)碼,具體請(qǐng)參考獲取手機(jī)號(hào)碼API文檔。




SDK其他方法說(shuō)明


1.獲取?絡(luò)狀態(tài)和運(yùn)營(yíng)商類型

方法原型
 public static int getNetworkType(Context context);


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
contextContext上下文


返回參數(shù)
參數(shù)類型說(shuō)明
networktyp eint?絡(luò)類型:0-未知、1-數(shù)據(jù)流量、2-純WiFi、3-流量+WiFi


2.獲取?絡(luò)狀態(tài)和運(yùn)營(yíng)商類型

方法原型
 public static int getOperatortype(Context context);


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
contextContext上下文


返回參數(shù)
參數(shù)類型說(shuō)明
operatortypeint運(yùn)營(yíng)商類型:0-未知;1-移動(dòng);2-聯(lián)通;3-電信


3.打印日志

方法原型
  public static void isShowLog(boolean isShowLog)


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
isShowLogboolean是否打印日志


4.刪除取號(hào)緩存

方法原型
   public void delScrip()


5.設(shè)置請(qǐng)求超時(shí)時(shí)間

方法原型
public void setOverTime(long overTime)


參數(shù)說(shuō)明
參數(shù)是否必選類型說(shuō)明
overTimelong設(shè)置超時(shí)時(shí)間(單位:秒)


配置授權(quán)頁(yè)

開發(fā)者可以通過(guò)在調(diào)用getLoginToken方法shi傳入AuthThemeConfig參數(shù)進(jìn)行移動(dòng)授權(quán)頁(yè)的配置。


GenAuthThemeConfig配置參數(shù)說(shuō)明
方法說(shuō)明
狀態(tài)欄
setStatusBar設(shè)置狀態(tài)欄顏色(系統(tǒng)版本在5.0以上可設(shè)置)、字體顏色(系統(tǒng)版本6.0以上可以設(shè)置黑色、白色)
服務(wù)條款
setNavTextColor設(shè)置服務(wù)條款標(biāo)題字體顏色
setNavColor設(shè)置服務(wù)條款標(biāo)題顏?
setNavTextSize設(shè)置服務(wù)條款標(biāo)題字體大小
setClauseLayoutResID設(shè)置服務(wù)條款標(biāo)題布局資源?件ID(包括返回按鈕)
授權(quán)?布局
setAuthContentView設(shè)置授權(quán)?布局顯?View
setAuthLayoutResID設(shè)置授權(quán)頁(yè)布局文件ID
安卓底部導(dǎo)航欄?適應(yīng)
setFitsSystemWindows開啟安卓底部導(dǎo)航欄?適應(yīng),開啟后,導(dǎo)航欄喚起時(shí),授權(quán)??元素 也會(huì)相對(duì)變化;不開啟?適應(yīng),?定義內(nèi)容可以鋪滿全屏,設(shè)置狀態(tài) 欄透明后,可以達(dá)到沉浸式顯?效果。true-開啟?適應(yīng),false-關(guān)閉 ?適應(yīng),默認(rèn)開啟。
授權(quán)頁(yè)號(hào)碼欄
setNumberColor設(shè)置手機(jī)號(hào)碼字體顏色
setNumberSize設(shè)置號(hào)碼欄字體大小
setNumFieldOffsetY設(shè)置號(hào)碼欄相對(duì)于標(biāo)題欄下邊緣y偏移
setNumFieldOffsetY_B設(shè)置號(hào)碼欄相對(duì)于底部y偏移
setNumFieldOffsetX設(shè)置號(hào)碼欄相對(duì)于默認(rèn)位置的x軸偏移量
授權(quán)?登錄按鈕
setLogBtnText設(shè)置登錄按鈕文本內(nèi)容、字體顏色,字體大小
setLogBtnImgPath設(shè)置授權(quán)登錄按鈕圖片
setLogBtn設(shè)置登錄按鈕的寬高
setLogBtnMargin設(shè)置登錄按鈕相對(duì)于屏幕左右邊緣邊距
setLogBtnOffsetY設(shè)置按鈕相當(dāng)于標(biāo)題欄下邊緣y偏移
setLogBtnOffsetY_B設(shè)置按鈕相對(duì)于底部y偏移
setLogBtnClickListener設(shè)置登錄按鈕點(diǎn)擊事件
授權(quán)?隱私欄
setPrivacyAlignment設(shè)置隱私條款的協(xié)議文本,自定義條款,自定義條款鏈接
setPrivacyText設(shè)置隱私條款字體大小、文字顏色、是否居中
setCheckBoxImgPath設(shè)置復(fù)選框圖片
setPrivacyOffsetY設(shè)置隱私條款相對(duì)于標(biāo)題欄下邊緣y偏移
setPrivacyOffsetY_B設(shè)置隱私條款相對(duì)于底部y偏移
setPrivacyMargin設(shè)置隱私條款距離手機(jī)左右邊緣的邊距
setPrivacyState設(shè)置是否默認(rèn)勾選復(fù)選框。
setPrivacyBookSymbol設(shè)置書名號(hào),0=設(shè)置,1=不設(shè)置,默認(rèn)設(shè)置
setCheckBoxLocation設(shè)置復(fù)選框相對(duì)右側(cè)協(xié)議?案居上或者居中,默認(rèn)居上。 0-居上,1-居中
setGenCheckBoxListener設(shè)置授權(quán)?勾選框和登錄按鈕的監(jiān)聽(tīng)事件
setGenCheckedChangeListener設(shè)置授權(quán)?勾選框是否勾選的監(jiān)聽(tīng)事件
setWebDomStorage0:關(guān)閉,1:打開。默認(rèn)關(guān)閉,可以通過(guò)?法的設(shè)置來(lái)? 持dom storage。
setPrivacyAnimation設(shè)置協(xié)議勾選框+協(xié)議?本的抖動(dòng)動(dòng)畫效果,默認(rèn)?抖動(dòng)。
setCheckTipText設(shè)置未勾選提?的?定義提??案。不設(shè)置則?提?。
授權(quán)?轉(zhuǎn)場(chǎng)動(dòng)畫
setAuthPageActIn設(shè)置授權(quán)頁(yè)進(jìn)場(chǎng)動(dòng)畫
setAuthPageActOut設(shè)置授權(quán)頁(yè)出場(chǎng)動(dòng)畫
彈窗模式
setAuthPageWindowMode設(shè)置授權(quán)頁(yè)寬高比例
setAuthPageWindowOffset設(shè)置授權(quán)頁(yè)窗口X軸Y軸偏移
setWindowBottom設(shè)置授權(quán)頁(yè)是否居于底部,0=居中;1=底部,設(shè)置1時(shí)Y軸偏移失效
setThemeId設(shè)置授權(quán)頁(yè)彈窗主題,也可以在Manifest中設(shè)置。
setBackButton彈窗授權(quán)?模式下,設(shè)置物理返回鍵是否有效,默認(rèn) 有效。true=有效,false=?效。
授權(quán)?語(yǔ)?切換
appLanguageType0.中?簡(jiǎn)體1.中?繁體2.英?
返回鍵監(jiān)聽(tīng)
setGenBackPressedListener設(shè)置授權(quán)?返回鍵監(jiān)聽(tīng)事件
setGenAuthLoginListener設(shè)置授權(quán)按鈕監(jiān)聽(tīng)事件,?參回調(diào)GenAuthLoginListener,??點(diǎn)擊登 錄按鈕時(shí)如果未勾選協(xié)議,觸發(fā)GenAuthLoginListener的 onAuthLoginListener (Context context,AuthLoginCallBack authLoginCallBack) ?法。可以實(shí)現(xiàn)?次彈窗確認(rèn)的功能
AuthLoginCallBack授權(quán)回調(diào),通過(guò)onAuthLoginCallBack(boolean b)決定是否繼續(xù)登錄流 程??梢詫?shí)現(xiàn)?次彈窗確認(rèn)的功能


finish授權(quán)頁(yè)
  SDK完成回調(diào)后,不會(huì)立即關(guān)閉授權(quán)頁(yè)面,需要開發(fā)者主動(dòng)調(diào)用離開授權(quán)頁(yè)面方法去完成頁(yè)面的關(guān)閉,請(qǐng)調(diào)用 SubSDK.quitActivity(mCtx);




授權(quán)頁(yè)規(guī)范


中國(guó)移動(dòng)授權(quán)頁(yè)規(guī)范

  為了確保用戶在登錄過(guò)程中將手機(jī)號(hào)碼信息授權(quán)給開發(fā)者使用的知情權(quán),一鍵登錄需要開發(fā)者提供授權(quán)頁(yè)登錄頁(yè)面 
供用戶授權(quán)確認(rèn)。開發(fā)者在調(diào)用授權(quán)登錄方法前,必須彈出授權(quán)頁(yè),明確告知用戶當(dāng)前操作會(huì)將用戶的本機(jī)號(hào)碼信 
息傳遞給應(yīng)用。 
  為了確保用戶在登錄過(guò)程中將手機(jī)號(hào)碼信息授權(quán)給開發(fā)者使用的知情權(quán),一鍵登錄需要開發(fā)者提供授權(quán)頁(yè)登錄頁(yè)面 
供用戶授權(quán)確認(rèn)。開發(fā)者在調(diào)用授權(quán)登錄方法前,必須彈出授權(quán)頁(yè),明確告知用戶當(dāng)前操作會(huì)將用戶的本機(jī)號(hào)碼信 
息傳遞給應(yīng)用。 


授權(quán)頁(yè)規(guī)范


注意:

1、開發(fā)者不得通過(guò)任何技術(shù)手段,破解授權(quán)頁(yè),或?qū)⑹跈?quán)頁(yè)面的號(hào)碼欄、隱私欄、品牌露出內(nèi)容隱
藏、覆蓋。
2、登錄按鈕文字描述必須包含“登錄”或“注冊(cè)”等文字,不得誘導(dǎo)用戶授權(quán)。
3、對(duì)于接入移動(dòng)認(rèn)證SDK并上線的應(yīng)用,我方會(huì)對(duì)上線的應(yīng)用授權(quán)頁(yè)面做審查,如果有出現(xiàn)未按要求
彈出或設(shè)計(jì)授權(quán)頁(yè)面的,將關(guān)閉應(yīng)用的認(rèn)證取號(hào)服務(wù)。 


中國(guó)聯(lián)通授權(quán)頁(yè)規(guī)范


服務(wù)條款需文字標(biāo)明 聯(lián)通統(tǒng)一認(rèn)證服務(wù)條款,協(xié)議內(nèi)容鏈接如下:?https://opencloud.wostore.cn/authz/resource/html/disclaimer.html?fromsdk=true



中國(guó)電信授權(quán)頁(yè)規(guī)范


為了確保用戶在登錄過(guò)程中將手機(jī)號(hào)碼信息授權(quán)給接入方使用的知情權(quán),天翼賬號(hào)登錄認(rèn)證需要接入方滿足如下要求:

(1)接入方在調(diào)用登錄認(rèn)證方法前,必須顯示出授權(quán)頁(yè)面,授權(quán)頁(yè)面需明確告知用戶操作會(huì)將用戶本機(jī)號(hào)碼信息授權(quán)給應(yīng)用;(天翼賬號(hào)服務(wù)與隱私協(xié)議url地址:https://e.189.cn/sdk/agreement/detail.do?hidetop=true

(2)接入方需展示“天翼賬號(hào)”品牌露出,不得通過(guò)任何技術(shù)手段,將授權(quán)頁(yè)面的隱私欄、品牌露出內(nèi)容隱藏、覆蓋;

(3)接入方上線前需要將授權(quán)頁(yè)面提交給我方進(jìn)行審核,審核通過(guò)后才可正式開放登錄功能調(diào)用使用量。若有出現(xiàn)未按要求設(shè)計(jì)授權(quán)頁(yè)面的行為或有非正常調(diào)用行為,為了保護(hù)用戶的隱私安全,我方有權(quán)將接入方應(yīng)用的登錄功能下線。

如下是天翼賬號(hào)標(biāo)準(zhǔn)頁(yè)面的設(shè)計(jì)規(guī)范,供合作方參考;