MobTech 秒驗常見問題
雙卡雙待手機如何登入
針對雙卡雙待手機只取當前流量卡號
用其他手機號如何登入
使用傳統驗證方式登入,例如驗證碼登入
一鍵登入只支援4G嗎
電信支援4G,5G網路取號,移動, 聯通支援5G,4G, 3G, 2G網路取號但在非5G,4G網路情況下容易取號失敗
是否支援三網
支援
可以用在H5或網頁上嗎
暫時不可以
對資料流量有什麼要求
免密登入能力必須經過運營商閘道器取號,所以必須開啟移動資料流量才能實現一鍵登入,但流量只耗費一點點
對手機型號有要求嗎
沒有
支援國外手機號嗎
不支援
手機號碼我們會儲存嗎
有儲存,需要將手機號傳給運營商。
是否需要自己伺服器配合
是的,需要伺服器配合的,客戶端那邊只能是返回運營商,預取號以及token等資訊,不能返回手機號,必須要對接服務端,把這些引數傳給服務端那邊,服務端那邊就會返回手機號
這個安全嘛 sim卡是可以複製的
卡複製了是沒用的,因為SIM卡內部是有加密資訊的,那個資訊是必須由運營商進行解析才能獲取到的資料 ,安全性是沒有問題的。
如果已經稽核了安卓的,還需要稽核iOS的怎麼辦
在重新提交,填寫上ios的Bundle id就行,不會影響安卓的,但是如果ios的之前已經稽核過了,那麼再次提交會覆蓋掉之前稽核的,是同一個key的話,會覆蓋的。可以重新再建立個應用,提交秒驗包名稽核
秒驗是否支援個人使用
秒驗的話,已上線應用公司個人都可使用,公司官網什麼的稽核的時候可以不寫,但是未上線應用 個人暫時無法接入 公司需要填寫相關資訊 ,官網上公司資訊需與app業務性質一致。沒有官網的話,有app介紹下載頁面也可以,上面也需有所屬公司名稱。
新人專享禮 · 新使用者接入即送 (秒驗+SMSSDK)系統自動送
整合秒驗一鍵登入SDK或簡訊SMSSDK的新使用者即可免費獲得1000條使用額度。 7.1開始新註冊並完成認證的使用者會在1小時內到賬30元,無使用期限
注:
- 秒驗與SMSSDK 簡訊活動,參與使用者只可二選一,不可同時參加兩項活動;
- 1000條使用額度以金額形式充入賬戶,贈送額度不予開具發票、不能提現;
- 贈送活動只支援中國大陸,國外,港澳臺都不支援;
秒驗是怎麼收費的
是在客戶端得到token之後,然後呼叫服務端介面置換手機號成功之後才會收費
秒驗充值單價的問題
不能累積計費,以單次最多充值的來計費
為什麼要先呼叫預取號介面,直接呼叫登陸介面是否可以
可以的,預取號介面一方面主要是為了加速一鍵登陸介面的響應速度,另一方面能夠提前預知當前裝置/網路環境是否可以進行一鍵登陸,所以我們建議先呼叫預取號介面,成功之後在呼叫一鍵登陸介面,預取號介面可以多次呼叫,第一次預取號成功後,1小時內是有本地快取的,所以1小時內的第二次預取號會走本地快取,速度非常快。
預取號超時時間預設是4s,可以通過介面設定,預取號時間直接取決於運營商,所以如果預取號時間較長只能檢查一下網路環境,另外多嘗試幾次,有時可能是網路波動引起的。
服務端置換token報錯token非法
token非法是客戶端和服務端的Appkey不一
iOS端status=5119302, res=null, error=未找到配置, seqid=316869966368829440}
報這個錯誤一般是稽核沒有通過的問題,使用者可以自己先到後臺檢查下有沒有提交專案裡的包名稽核,如果檢查不到,可以給到AppKey和Bundle id讓Mob技術人員去查
iOS端預取號失敗,錯誤的請求包簽名Code = 6119127,resultCode=103102...desc=錯誤的請求包簽名
這個錯誤一般可能稽核過了,但是Bundle id有加空格或者換行,需要找稽核的人讓運營商那邊查下
iOS端resultCode:104201,desc:token invalid,seqid:186063876160012288,status:5119507
optoken過期,不存在,或者已經使用過了
iOS端status:4119310,res:null,error:“token未找到”
如果是form表單傳的就要先encode傳到自己的服務端,不然會被轉義。也就說在調服務端介面傳參之前,在iOS端先把token先encode了,在傳過去
iOS端移動報 獲取移動token失敗 Code=1003 “(null)” UserInfo=【獲取token失敗、錯誤的請求籤名、103101】(老版本,建議升級)
工程中的Info.plist中新增bundleId對應的key-value。搜尋Xcode專案工程中的.strings國際化檔案,如果app存在本地國際化檔案,請在每個本地國際化檔案中新增CFBundleIdentifier,各個語言版本檔案中都需要新增。
iOS端拉起授權頁方法無回撥[錯誤碼為: 170206](老版本,建議升級)
請檢查拉起授權頁介面配置引數傳參,傳入模型是否為空或者傳入的model.currentViewController是否為當前控制器
確認配置是否傳入vc,拉起頁面時vc必須為當前正在顯示的vc;若傳self,需確認當前self就是當前vc
iOS端預取號連續報170606 或者是20101 (老版本,建議升級)
運營商限制不允許短時間內連續多次頻繁呼叫登入介面,請過段時間再試,測試時不要短時間內頻繁呼叫
iOS端秒驗報錯問題:170001,錯誤描述:私網IP無效,中國聯通,網路錯誤,error_code=1102
可以試試開關下飛航模式,這個是運營商基站快取的問題,比如你在A基站獲取的是IP1,這時你走到跨基站B拿到的是IP2,那麼這時的IP1就失效了,只有重啟手機或開關飛航模式或重啟流量可以重新整理IP,這個是聯通運營商內部SDK的快取機制沒有做好,和聯通反饋過的,但是還是有部分地區沒有解決好。
iOS端秒驗2.1.2版本,移動卡可以拉起介面,電信卡拉不起介面
建議使用者更新版本,之前舊的SDK可能呼叫的電信sdk是老的介面,可能是電信SDK問題,更新到新的SDK,已經可以
iOS端Demo預取號 resultDic: (null) error: Error Domain=SecVerifyErrorDomain Code=170001 "(null)" UserInfo="(null)"
這個是聯通的舊版SDK的域名問題,聯通那邊已提交證書重新稽核通過,已解決或者是更新我們的SDK到最新版本
iOS端Error Domain=拉起授權頁失敗,請檢查SecVerifyCustomModel.viewController是否為頂層vc Code=6119144
傳的VC有問題,要麼沒有傳,要的傳的不是當前VC
iOS端如果登陸成功了但是沒有自動回收介面,是什麼原因
可能是配置了手動關閉,然後又沒調關閉的方法
iOS端怎麼在授權介面上加自定義按鈕之後,push到其他的介面
代理方法裡可以拿到當前授權頁vc和nav,直接push就行了,例如 [weakSelf.authPageVc.navigationController pushViewController:vc animated:YES]; 可以參考demo
iOS端Error Domain=拉起授權頁失敗,請檢查SecVerifyCustomModel.viewController是否為頂層vc Code=6119144 "(null)"
拉起了授權介面,並且報這個錯誤,看是不是設定了自定義轉場動畫,然後時間超過了1秒,我們內部判斷了如果超過1秒沒有收到present回撥就認為present失敗,提示為傳入的vc異常,,如果這邊只設置了 mobModel.modalPresentationStyle = NSNumber(value: UIModalPresentationStyle.overFullScreen.rawValue),,看看有沒有設定【SVSDKHyVerift setDelegate:self】,如果有,去掉試下。
iOS端自定義UI,加了一個其他方式按鈕,點選這個按鈕,怎麼判斷使用者是否同意了隱私協議呢
可以用一個全域性變數在 這個代理方法中
/**授權頁點選相關事件*/
-(void)svVerifyCheckBoxClick:(UIViewController *)authVC userInfo:(SVSDKHyProtocolUserInfo*)userInfo checkBoxValue:(BOOL)isSeleted;
記錄下checkBoox的狀態,這個在點選checkBox時會觸發。
iOS端Error Domain=preVerify failed (timeout) Code=6119124 "(null)") 預取號超時
首先保證必須有開4G移動流量,如果有開了,然後wifi也開了,還是超時,看下wifi是否有設定代理,一般是網路問題,只能多試試,或者關掉在開下網路看看
iOS端電信不管是呼叫預取號介面或者是登陸介面都報以下錯誤:Error Domain=success Code=6119129 UserInfo="(null)"
這個是因為阿里雲的包裡的電信包與我們的電信包版本不一樣,導致衝突問題,找開發處理髮包即可
iOS端在本地專案中秒驗登陸沒有問題,但是釋出上線之後拉起授權頁一直轉圈圈可能是什麼原因
可能在釋出中把Bundle id改掉了,需要檢查這塊
iOS端秒驗 預登入的時候 一直報這個6119125 預取號異常(內部異常)
運營商報的錯誤,無法確定原因,多測試幾次試試
iOS端預取號介面的話,如果有很多頁面都有點選登陸按鈕的話,是放在啟動的時候呼叫,還是在對應的頁面登陸前呼叫
哪一個頁面需要呼叫,在那個頁面的viewdidiload或者viewwillappear裡調比較好,然後登陸按鈕直接調拉起頁面就行了,不需要在呼叫預取號介面
iOS端預取號失敗Error Domain=check the operator appKey/appSecret Code=6119121 "(null)"
iOS用成安卓的包名,請求初始化,然後拿不到配置就報這個錯誤,需要去後臺檢查iOS提交稽核填寫的包名是否與ios專案裡的包名一致
iOS端本機認證和一鍵登陸的區別
本機認證本質上來說是對輸入的手機號進行驗證操作,一鍵登陸本質上是從三大運營商那裡獲取使用者的手機號從而避免使用者手動輸入手機號,兩者都需要去我們的服務端請求操作。一鍵登入之所以需要授權頁面是因為需要使用者授權運營商提供手機號給第三方,本機認證不需要,所以運營商的SDK就沒有提供相關的授權頁面。
iOS端錯誤碼:5119105,error:operatorToken引數不正確
這個問題可以檢查下客戶端呼叫介面,有的人可能是呼叫的本地認證的介面獲取的引數上傳的,而不是一鍵登陸的介面
iOS端"message":"token非法","phone":null
(1)token重複使用,多次使用同一個token或者使用了已經校驗過的token
(2)服務端使用的appkey和客戶端不匹配,appkey錯誤
(3)token由客戶端傳遞給服務端後,被轉義了,可以比對下客戶端和服務端,需要注意下客戶那邊是不是用form表單傳給服務端的,如果是用form表單傳的話,需要用urlencode一下,不然像加號什麼的會被轉義成空格,會造成問題
(4)token和optoken傳反了
iOS端後臺資料的含義,如下圖
初始化 :初始化是SDK的內部init方法,ios的話,只需要在plist檔案裡配置了appkey就是初始化我們的SDK,也可以呼叫程式碼來初始化
#import <MOBFoundation/MOBFoundation.h>
[MobSDK registerAppKey:@"2e76e2e95a7ad" appSecret:@"e83de04bc9d850784ca01b5fcfbc886e"];
預取號 :就是對接文件中的預登陸(preLogin)介面
拉起授權頁 :就是呼叫我們的一鍵登陸介面,會彈出我們的授權介面,如果是用的無UI的版本,那這個步驟資料會為0
獲取token :就是使用者點選授權登入也就是一鍵登入時的介面
置換號碼 :就是最終取號的介面
從“獲取token”開始就是使用者實際登陸操作,獲取token代表使用者發起授權登陸請求,併成功獲取到加密手機號,置換號碼相當於拿到解密手機號,置換號碼代表的是登陸成功, 舉例:100個使用者發起一鍵登入請求,99個使用者客戶端成功拿到加密手機號,然後99個客戶端發起解密手機號請求,98個使用者客戶端成功拿到解密手機號並登入成功。基本就是這個意思。
從預取號到token中間流失的使用者是不符合一鍵登陸條件,自動跳轉到其他登陸方式
iOS端自定義一鍵登入點選獲取token等待loading
在-(BOOL)svVerifyShouldShowLoadingLoginClick:userInfo:返回NO即可,然後自行新增自定義loading,也需要自行控制隱藏
//將要顯示內建的一鍵登入等待loading,返回NO則不顯示內建loading,可在此新增自定義loading
-(BOOL)svVerifyShouldShowLoadingLoginClick:(UIViewController *)authVC userInfo:(SVSDKHyProtocolUserInfo *)userInfo{
dispatch_async(dispatch_get_main_queue(), {
[SVProgressHUD showWithStatus:@"這是外部設定的自定義loading"];
});
return NO;
}
iOS端自定義隱私協議未勾選提示
在-(BOOL)svVerifyShouldAlertUnChecked:userInfo:返回NO即可,然後自行新增自定義提示,也需要自行控制隱藏
//將要顯示內建的未勾選協議提示,返回NO則不顯示內建提示,可在此新增自定義提示
-(BOOL)svVerifyShouldAlertUnChecked:(UIViewController *)authVC userInfo:(SVSDKHyProtocolUserInfo*)userInfo{
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"請閱讀並勾選同意協議" message:@"這是一個外部新增的自定義提示,代替sdk內建提示" preferredStyle:(UIAlertControllerStyleAlert)];
[alert addAction:[UIAlertAction actionWithTitle:@"同意" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
[SVSDKHyVerify setCheckBoxValue:YES];
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"返回" style:(UIAlertActionStyleCancel) handler:nil]];
[authVC presentViewController:alert animated:YES completion:nil];
});
return NO;
}
iOS端跳轉自定義的隱私協議web頁(根據相關合規要求,協議頁不得隱藏)
//將要跳轉協議web頁,返回NO則不自動跳轉,可在此自行跳轉自定義web頁
-(BOOL)svVerifyShouldLinkPrivacy:(UIViewController *)authVC userInfo:(SVSDKHyProtocolUserInfo*)userInfo{
//獲取當前點選的協議相關資訊
SVSDKHyPrivacyText * privacyTextObj = userInfo.privacyTextObj;
if (privacyTextObj.textLinkString != nil) {
dispatch_async(dispatch_get_main_queue(), ^{
if (@available(iOS 9.0, *)) {
SFSafariViewController * web = [[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:privacyTextObj.textLinkString]];
// [authVC.navigationController pushViewController:web animated:YES];
[authVC presentViewController:web animated:YES completion:nil];
} else {
UIAlertController * alert = [UIAlertController alertControllerWithTitle:privacyTextObj.text message:privacyTextObj.textLinkString preferredStyle:(UIAlertControllerStyleAlert)];
[alert addAction:[UIAlertAction actionWithTitle:@"返回" style:(UIAlertActionStyleCancel) handler:nil]];
[authVC presentViewController:alert animated:YES completion:nil];
}
});
return NO;
}
return YES;
}
iOS端resultDataJson =","seqid":"355777667998416896"}
有可能是SDK運營商版本和專案運營商版本不一致,導致問題
iOS端Error Domain=內部閘道器錯誤 Code=6119128
這個問題是手機當前網路問題,開關飛航模式看看是否可以
iOS端使用程式碼主動呼叫一鍵登陸按鈕
[loginButton sendActionsForControlEvents:(UIControlEventTouchUpInside)];
可以用程式碼去執行點選事件
iOS端聯通報一些:內部閘道器錯誤,無資料網路連結,無法拉起授權介面等等
需要先確認下使用者使用的是什麼版本的秒驗SDK,可能版本還很低,像2.x等版本呀,需要更新到最新版本才行,老版本的聯通sdk是有很多bug問題的
iOS端會不會因為傳入的是tabbarvc這個vc,導致授權頁不出現問題
我們這個原理是用傳入的VC去present授權頁面,但是present本身不一定絕對能彈出來,這個是系統的機制,如果您的vc不是最上層,或者vc上已經有alert彈框,這種情況下就沒法在present授權頁,和這個vc本身是vc還是tabbarvc沒關係的。
iOS端如何知道使用者勾選協議的狀態
取checkBox控制元件的isSelect,或者uiConfigure.checkDefaultState.boolValue
iOS端整合3.1.2或以上秒驗需要注意的地方
首先mobFondation.framework需要更新到3.2.28或者以上版本,另外可能會報以下錯誤如下:
需要加Network.Framework依賴庫
iOS端隱私狀態列與登陸按鈕是否關聯
有客戶問,我設定了登陸按鈕兩種狀態,但是勾選了隱私,為什麼並沒有什麼變化,我們的一鍵登陸按鈕和勾選框是沒有狀態關聯的,需要使用者自己實現
iOS端如何獲取運營商名字和隱私,做一些處理
例如我想改運營商資訊為別的國家語言什麼的,運營商和協議可以在代理方法種獲取,方法裡的userInfo裡有_uiElement欄位,裡面有privacyName和privacyUrl,如果需要自定義隱私欄的語言,就把隱私控制元件換成自己的,後續的跳轉詳情都用自己的就行。 也可以把當前隱私控制元件的那個privacyName文字替換成你需要的,不過這種沒有測過,可能不生效,最好自己重新寫新的隱私空間,這種肯定可以的,另外有人可能是直接在改SVSDKHyPrivacyText配置,這個是提前配置的,這個只是個傳值用的model,改了並沒有效的,代理裡拿控制元件手動改attrbuteText,或者重新寫一個控制元件
-(void)svVerifyAuthPageViewDidLoad:(UIViewController *)authVC userInfo:(SVSDKHyProtocolUserInfo *)userInfo{}
iOS端為什麼手動設定當前授權頁checkBox勾選狀態無效
這個方法[SVSDKHyVerify setCheckBoxValue:YES];是授權頁面已經顯示後用來切換的,是改狀態用的,如果需要設定預設值的話需要用uiConfigure.checkDefaultState = @(YES);checkbox不能通過控制元件直接設定狀態,SDK內部是通過model來記錄狀態的,如果在外面直接改控制元件狀態sdk是不知道的。需要區別用法
iOS端更新秒驗SDK到3.1.2版本報如下錯誤
Undefined symbol:
OBJC_CLASS
$_MOBFDeApiService
需要把mobFoundation.framework更新到3.2.28或者以上版本
Android端秒驗報錯6119401
因為秒驗是雙端支援,如果在稽核包名時,某一端沒有填寫,那麼此端秒驗將不可用:
如何重新提交稽核
請注意:在後臺點選重新提交稽核會影響已稽核通過的應用。這種情況建議重新在後臺建立一個新的應用,雙端都提交稽核,後期替換為這個新key。