認證目前只支持一種方式:短信或電話回呼。(譯註:此處不許確,起碼還要郵箱等其餘方式。)
認證步驟:git
調用RequestAuthCode請求驗證碼。安全
收到驗證碼後使用驗證碼 登陸/註冊。服務器
若是一直沒收到驗證碼,調用AuthCodeCall請求電話回呼。app
認證規則:
若是RequestAuthCode返回 isRegistered = false, 那麼下一步使用註冊接口SignUp, 不然使用登陸接口 SignIn。函數
若是任何步驟返回超時,整個流程必須從頭開始。ui
StartPhoneAuth 開始電話驗證
SendCodeByPhoneCall 使用電話回呼方式接收驗證碼
StartEmailAuth 開始郵箱驗證
StartAnonymousAuth 開始匿名認證
StartTokenAuth 啓動基於token的登陸
StartUsernameAuth 開始帳號方式登陸
ValidateCode 驗證用戶登陸
ValidatePassword 驗證帳號密碼
GetOAuth2Params 獲取OAuth2參數
CompleteOAuth2 完成OAuth2登陸
SignUp 註冊
SignIn 登陸
GetAuthSessions 獲取驗證會話
TerminateSession 結束會話
TerminateAllSessions 結束全部會話
SignOut 註銷url
電話方式認證類型:
1.Code
2.Passwordcode
郵箱方式認證類型:
1.Code
2.OAuth2
3.Passwordtoken
請求:接口
StartPhoneAuth(Phone, AppId, AppKey, deviceHash, deviceTitle, timeZone, Languages);
響應:
PhoneResponse(transactionHash, isRegistered)。
其中,deviceHash 是設備uuid和app命名id的hash。用於從新安裝時自動註銷用戶。(怎麼起做用待研究)。
注: 此處isRegistered 爲false的話就須要走註冊流程,不然走登陸流程:雖然同樣。transactionHash 是登陸前的安全驗證機制,登陸完刪除。
請求:
SendCodeByPhoneCall(transactionHash)
響應:空。
在用戶未收到短信的狀況下,再次調用此函數發起電話回呼通知驗證碼。
請求:
StartEmailAuth(email, appId, appKey, deviceHash, deviceTitle, timeZone, languages);
響應:
EMailResponse(transactionHash, isRegistered, activationType)。
其中activationType 時 Code, Password, OAuth2之一。
請求:
StartAnonymousAuth(name, appId, appKey, deviceHash, deviceTitle, timeZone, languages);
響應:
Auth。
按照新建用戶處理。
請求:
StartTokenAuth(token, appId, appKey, deviceHash, deviceTitle, timeZone, languages);
響應:
Auth。
請求:
StartUsernameAuth(username, appId, appKey, deviceHash, deviceTitle, timeZone, languages);
響應:
usernameResponse(transactionHash, isRegistered);
請求:
ValidateCode(transactionHash, code);
響應:
Auth。
請求:
ValidatePassword(transactionHash, password);
響應:
Auth。
請求:
GetOAuth2Params(transactionHash, redirectUrl);
響應:
authUrl
redirectUrl是本身的Url, authUrl是第三方帳號服務器的url。
請求:
CompleteOAuth2(transactionHash, code);
響應:
Auth。
請求:
SignUp (transactionHash, name, sex, password)
響應:
Auth。
認證成功後返回AuthResponse信息。含登陸用戶信息和服務器配置信息。
Auth = (user, config)。
Struct AuthSession = (id, authHolder, appId, appTitle, deviceTitle, authTime, authLocation, latitude, longitude);
Enum AuthHolder = {ThisDevice, OtherDevice)
請求:
GetAuthSessions()
響應:
List of AuthSession。
獲取全部活動用戶的認證會話。 (譯註:應該是指本人的多個設備登陸會話)。
TerminateSession(id of AuthItem) = void. 註銷單個會話。
TerminateAllSessions() = void. 註銷除當前會話以外的全部會話。
SignOut() = void. 註銷當前會話。