中國移動一鍵免密登入103102 Android包簽名錯誤
移動統一認證一鍵免密登入api被呼叫時會檢測應用的包名以及md5包簽名以確認應用的合法性。出現包簽名錯誤那麼就是應用的包簽名與使用者在中國移動開發者社群上填寫包名md5包簽名的不一致導致的。
那麼出現這種問題的可能性有以下兩種:
1.開發者打包時使用的keystore檔案變更
開發者打包時使用的keystore檔案變更的情況一般是開發者在配置一鍵免密登入能力時使用的release的應用並通過移動提供的獲取應用包簽名工具獲取的release包的md5小寫包簽名,但是在實際除錯中大多數是debug版本。
一般情況下開發者除錯過程中AS都預設使用一個debug.keystore檔案打包debug版本的應用,那麼這時sdk獲取到的應用的md5小寫包簽名是debug.keystore檔案的,為了保證debug模式下的md5小寫包簽名和開發者社群的一致我們需要修改debug模式下使用的的keystore檔案。
首先在應用的build.gradle檔案中對 Release版本的keystore檔案進行配置。
android { compileSdkVersion 28 buildToolsVersion "28.0.2" signingConfigs { config { keyAlias 'release keystore 的 alias' keyPassword 'password' storeFile file('keystore檔案的絕對路徑') storePassword 'password' } } ... ... }
然後將這個配置設定到自己的BuildType中
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //配置release版本使用的keystore signingConfig signingConfigs.config } debug { minifyEnabled false //配置debug版本使用的keystore signingConfig signingConfigs.config debuggable true } }
配置好之後release和debug或者其他的buildType使用的keystore檔案就一致了,執行後再次呼叫一鍵免密登入的api就能通過應用合法性校驗。
2.開發者使用了appid和appkey使用錯誤
這種情況一般是由於開發者疏忽導致,比如開發者在中國移動開發者社群申請了兩個應用分別是A和B配置能力的時候分別配置了兩套包名、md5包簽名,但是在程式碼中呼叫中國移動一鍵免密登入時傳入的APPID和APPKEY用錯,A應用使用了B應用的APPID與APPKEY,B應用使用了A應用的APPID與APPKEY。
3.md5包簽名大小寫錯誤
中國移動統一認證一鍵免密登入要求使用者在開發者社群填寫的包簽名是小寫的
4.應用被重新簽名
部分應用在整合某些業務或者上傳至某些應用商城時,對應的業務或者應用商城有可能會對應用重新簽名,此時就需要使用者協商好之後再在開發者社群上配置統一認證一鍵免密登入的包名和包簽名。
比如:應用自己的keystore md5包簽名是: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
被重新簽名後的keystore md5包簽名是: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
那麼在開發者社群上申請應用時申請兩個應用配置一鍵免密登入時包名填寫同一個包名,md5小寫分別配置重新簽名前和重新簽名後的然後在除錯時使用自己的的包簽名對應的appid和appkey,上線應用商城或者其他業務時將appid和appkey修改成重新簽名後的,這樣應用被重新簽名後也能繼續使用統一認證一鍵免密登入功能