TLSHelper.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. //
  2. // TLSHelper.h
  3. // TLSSDK
  4. //
  5. // Created by okhowang on 15/11/6.
  6. //
  7. //
  8. #ifndef TLSSDK_TLSHelper_h
  9. #define TLSSDK_TLSHelper_h
  10. #import <Foundation/Foundation.h>
  11. #include <AvailabilityMacros.h>
  12. #import "TLSUserInfo.h"
  13. #import "TLSSmsLoginListener.h"
  14. #import "TLSSmsRegListener.h"
  15. #import "TLSPwdLoginListener.h"
  16. #import "TLSPwdRegListener.h"
  17. #import "TLSPwdResetListener.h"
  18. #import "TLSStrAccountRegListener.h"
  19. #import "TLSRefreshTicketListener.h"
  20. #import "TLSOpenLoginListener.h"
  21. #import "TLSOpenBindListener.h"
  22. #import "TLSOpenQueryListener.h"
  23. #import "TLSExchangeTicketListener.h"
  24. #import "TLSGuestLoginListener.h"
  25. #import "TLSOpenAccessTokenListener.h"
  26. @interface TLSHelper : NSObject
  27. /**
  28. * 国家区号
  29. * 例如:中国86
  30. */
  31. @property uint32_t country;
  32. /**
  33. * 语言类型
  34. * 目前有以下类型供选择:
  35. * 2052:简体中文;1028:繁体中文;1033:英文; 1041: 日语; 1036: 法语
  36. */
  37. @property uint32_t language;
  38. /**
  39. * @brief 获取TLSHelper 实例
  40. *
  41. * @return 返回TLSHelper 实例
  42. */
  43. +(TLSHelper *) getInstance;
  44. /**
  45. * @brief 初始化TLSLoginHelper 实例
  46. *
  47. * @param sdkAppid - 用于TLS SDK的appid
  48. * @param accountType - 账号类型
  49. * @param appVer - app 版本号,格式为 x.x.x.x, 例如,客户端版本为1.1,传入参数为 @"1.1.0.0"
  50. *
  51. * @return 返回TLSLoginHelper 实例
  52. */
  53. -(TLSHelper *) init:(int)sdkAppid
  54. andAccountType:(int)accountType
  55. andAppVer:(NSString *)appVer DEPRECATED_ATTRIBUTE;
  56. /**
  57. * @brief 初始化TLSLoginHelper 实例
  58. *
  59. * @param sdkAppid - 用于TLS SDK的appid
  60. * @param appVer - app 版本号,格式为 x.x.x.x, 例如,客户端版本为1.1,传入参数为 @"1.1.0.0"
  61. *
  62. * @return 返回TLSLoginHelper 实例
  63. */
  64. -(TLSHelper*)init:(int)sdkAppid andAppVer:(NSString *)appVer;
  65. /**
  66. * 设置请求超时时间,默认为10000毫秒。
  67. * sdk与后台交互时,如果超时,会重试5次,所以不应设置太大的值
  68. *
  69. * @param timeout - 超时时间(单位毫秒)
  70. */
  71. -(void) setTimeOut:(int)timeout;
  72. /**
  73. * 打印调试日志
  74. *
  75. * @param show - 是否输出日志到logcat
  76. */
  77. -(void) setLogcat:(BOOL)show;
  78. /**
  79. * 获取TLS SDK的版本信息
  80. *
  81. * @return SDK的版本信息
  82. */
  83. -(NSString *) getSDKVersion;
  84. /**
  85. * 获取guid
  86. *
  87. * @return guid
  88. */
  89. -(NSData *) getGUID;
  90. /**
  91. * 获取登录过当前app的帐号列表
  92. *
  93. * @return 账号列表信息 TLSUserInfo数组
  94. */
  95. -(NSArray *) getAllUserInfo;
  96. /**
  97. * 获取最后一次登录记录
  98. *
  99. * @return 账号信息
  100. */
  101. -(TLSUserInfo *) getLastUserInfo;
  102. /**
  103. * 清除用户登录数据
  104. *
  105. * @param identifier - 用户手机号码
  106. * @param deleteAccount - 是否将identifier从历史登录账号列表中删除 NO表示不删除 YES表示删除
  107. *
  108. * @return ture
  109. */
  110. -(BOOL) clearUserInfo:(NSString *)identifier withOption:(BOOL)deleteAccount;
  111. /**
  112. * 判断是否需要用户登录(输入密码或者短信验证)
  113. *
  114. * @param identifier - 用户帐号
  115. *
  116. * @return true:需要用户登录;false:本地已有登录态,无需登录,可直接换票
  117. */
  118. -(BOOL) needLogin:(NSString *)identifier;
  119. /**
  120. * 获取本地保存TLS票据
  121. *
  122. * @param identifier - 用户手机号码
  123. *
  124. * @return json webtoken
  125. */
  126. -(NSString*) getTLSUserSig:(NSString *)identifier;
  127. /**
  128. * 换票,刷新票据
  129. *
  130. * @param identifier - 用户账号
  131. * @param listener - TLSRefreshTicketListener 回调对象
  132. *
  133. * @return 0表示调用成功;其它表示调用失败
  134. */
  135. -(int) TLSRefreshTicket:(NSString *)identifier andTLSRefreshTicketListener:(id<TLSRefreshTicketListener>) listener;
  136. #pragma mark - 密码登录
  137. /**
  138. * 密码登录,获取票据
  139. *
  140. * @param identifier - 用户账号
  141. * @param password - 用户密码
  142. * @param listener - TLSPwdLoginListener 回调对象
  143. *
  144. * @return 0表示调用成功;其它表示调用失败
  145. */
  146. -(int) TLSPwdLogin:(NSString *)identifier andPassword:(NSString *)password andTLSPwdLoginListener:(id<TLSPwdLoginListener>)listener;
  147. /**
  148. * 刷新图片验证码
  149. *
  150. * @param listener - TLSPwdLoginListener 回调对象
  151. *
  152. * @return 0表示调用成功;其它表示调用失败
  153. */
  154. -(int) TLSPwdLoginReaskImgCode:(id<TLSPwdLoginListener>)listener;
  155. /**
  156. * 验证图片验证码,如果验证成功则登录成功,否则要重新验证
  157. *
  158. * @param imgCode - 用户账号
  159. * @param listener - TLSPwdLoginListener 回调对象
  160. *
  161. * @return 0表示调用成功;其它表示调用失败
  162. */
  163. -(int) TLSPwdLoginVerifyImgCode:(NSString *)imgCode andTLSPwdLoginListener:(id<TLSPwdLoginListener>)listener;
  164. #pragma mark - 短信登录
  165. /**
  166. * 短信登录,手机号验证
  167. *
  168. * @param mobile - 用户手机号码
  169. * @param listener - TLSSmsLoginListener 回调对象
  170. *
  171. * @return 0表示调用成功;其它表示调用失败
  172. */
  173. -(int) TLSSmsAskCode:(NSString *)mobile andTLSSmsLoginListener:(id<TLSSmsLoginListener>)listener;
  174. /**
  175. * 短信登录,刷新短信验证码
  176. * 注意:一定是TLSSmsAskCode调用成功了,但是没有收到验证码,才可以调用此接口,否则可能会报错
  177. *
  178. * @param mobile - 用户手机号码
  179. * @param listener - TLSSmsLoginListener 回调对象
  180. *
  181. * @return 0表示调用成功;其它表示调用失败
  182. */
  183. -(int) TLSSmsReaskCode:(NSString *)mobile andTLSSmsLoginListener:(id<TLSSmsLoginListener>)listener;
  184. /**
  185. * 短信登录,验证短信验证码
  186. *
  187. * @param mobile - 用户手机号码
  188. * @param code - 验证码
  189. * @param listener - TLSSmsLoginListener 回调对象
  190. *
  191. * @return 0表示调用成功;其它表示调用失败
  192. */
  193. -(int) TLSSmsVerifyCode:(NSString *)mobile andCode:(NSString *)code andTLSSmsLoginListener:(id<TLSSmsLoginListener>)listener;
  194. /**
  195. * 短信登录,获取票据
  196. *
  197. * @param mobile - 用户手机号码
  198. * @param listener - TLSSmsLoginListener 回调对象
  199. *
  200. * @return 0表示调用成功;其它表示调用失败
  201. */
  202. -(int) TLSSmsLogin:(NSString *)mobile andTLSSmsLoginListener:(id<TLSSmsLoginListener>)listener;
  203. #pragma mark - 匿名登录 游客模式
  204. /**
  205. * 登录匿名账号,无需注册直接登录,在不清数据的情况下会登录上次登录的匿名账号
  206. * @param listener 处理回调 需要实现TLSGuestLoginListener协议
  207. * @return 0表示成功;其他表示调用失败
  208. */
  209. -(int)TLSGuestLogin:(id<TLSGuestLoginListener>)listener;
  210. /**
  211. * 获取本地匿名账号
  212. * @return 匿名账号的userinfo,若没有则返回nil
  213. */
  214. -(TLSUserInfo*)getGuestIdentifier;
  215. #pragma mark - 手机号密码注册
  216. /**
  217. * 提交用于验证的手机号码
  218. *
  219. * @param mobile - 手机号码 (国家码-手机号码)
  220. * @param listener - TLSPwdRegListener 回调对象
  221. *
  222. * @return 0表示调用成功;其它表示调用失败
  223. */
  224. -(int) TLSPwdRegAskCode:(NSString *)mobile andTLSPwdRegListener:(id<TLSPwdRegListener>)listener;
  225. /**
  226. * 用第三方帐号绑定注册新手机号
  227. * 提交用于验证的手机号码
  228. *
  229. * @param mobile - 手机号码 (国家码-手机号码)
  230. * @param accType - 第三方帐号类型 1:QQ 2:微信
  231. * @param openAppid - 第三方帐号appid
  232. * @param openid - 第三方账号OpenID
  233. * @param accessToken - 第三方帐号的access token
  234. * @param listener - TLSPwdRegListener 回调对象
  235. *
  236. * @return 0表示调用成功;其它表示调用失败
  237. */
  238. -(int) TLSPwdRegAskCode:(NSString *)mobile andAccType:(uint32_t)accType andOpenAppid:(NSString*)openAppid andOpenId:(NSString*)openid andAccessToken:(NSString*)accessToken andTLSPwdRegListener:(id<TLSPwdRegListener>)listener;
  239. /**
  240. * 当使用下行短信验证手机号码时,用于请求重新发送下行短信
  241. * 注意:一定是TLSPwdRegAskCode调用成功了,但是没有收到验证码,才可以调用此接口,否则可能会报错
  242. *
  243. * @param listener - TLSPwdRegListener 回调对象
  244. *
  245. * @return 0表示调用成功;其它表示调用失败
  246. */
  247. -(int) TLSPwdRegReaskCode:(id<TLSPwdRegListener>)listener;
  248. /**
  249. * 用于提交收到的短信验证码
  250. *
  251. * @param code - 短信验证码
  252. * @param listener - TLSPwdRegListener 回调对象
  253. *
  254. * @return 0表示调用成功;其它表示调用失败
  255. */
  256. -(int) TLSPwdRegVerifyCode:(NSString *)code andTLSPwdRegListener:(id<TLSPwdRegListener>)listener;
  257. /**
  258. * 注册成功获取账号
  259. *
  260. * @param password - 用户密码
  261. * @param listener - TLSPwdRegListener 回调对象
  262. *
  263. * @return 0表示调用成功;其它表示调用失败
  264. */
  265. -(int) TLSPwdRegCommit:(NSString *)password andTLSPwdRegListener:(id<TLSPwdRegListener>)listener;
  266. #pragma mark - 手机号重置密码
  267. /**
  268. * 提交用于验证的手机号码
  269. *
  270. * @param mobile - 手机号码 (国家码-手机号码)
  271. * @param listener - TLSPwdResetListener 回调对象
  272. *
  273. * @return 0表示调用成功;其它表示调用失败
  274. */
  275. -(int) TLSPwdResetAskCode:(NSString *)mobile andTLSPwdResetListener:(id<TLSPwdResetListener>)listener;
  276. /**
  277. * 当使用下行短信验证手机号码时,用于请求重新发送下行短信
  278. *
  279. * @param listener - TLSPwdResetListener 回调对象
  280. *
  281. * @return 0表示调用成功;其它表示调用失败
  282. */
  283. -(int) TLSPwdResetReaskCode:(id<TLSPwdResetListener>)listener;
  284. /**
  285. * 用于提交收到的短信验证码
  286. *
  287. * @param code - 短信验证码
  288. * @param listener - TLSPwdResetListener 回调对象
  289. *
  290. * @return 0表示调用成功;其它表示调用失败
  291. */
  292. -(int) TLSPwdResetVerifyCode:(NSString *)code andTLSPwdResetListener:(id<TLSPwdResetListener>)listener;
  293. /**
  294. * 注册成功获取账号
  295. *
  296. * @param password - 用户密码
  297. * @param listener - TLSPwdResetListener 回调对象
  298. *
  299. * @return 0表示调用成功;其它表示调用失败
  300. */
  301. -(int) TLSPwdResetCommit:(NSString *)password andTLSPwdResetListener:(id<TLSPwdResetListener>)listener;
  302. #pragma mark - 手机号短信注册
  303. /**********************************************
  304. * 短信注册接口
  305. *********************************************/
  306. /**
  307. * 提交用于验证的手机号码
  308. *
  309. * @param mobile - 手机号码 (国家码-手机号码)
  310. * @param listener - TLSSmsRegListener 回调对象
  311. *
  312. * @return 0表示调用成功;其它表示调用失败
  313. */
  314. -(int) TLSSmsRegAskCode:(NSString *)mobile andTLSSmsRegListener:(id<TLSSmsRegListener>)listener;
  315. /**
  316. * 带第三方帐号绑定注册手机号
  317. * 提交用于验证的手机号码
  318. *
  319. * @param mobile - 手机号码 (国家码-手机号码)
  320. * @param accType - 第三方帐号类型 1:QQ 2:微信
  321. * @param openAppid - 第三方帐号appid
  322. * @param openid - 第三方账号OpenID
  323. * @param accessToken - 第三方帐号的access token
  324. * @param listener - TLSSmsRegListener 回调对象
  325. *
  326. * @return 0表示调用成功;其它表示调用失败
  327. */
  328. -(int) TLSSmsRegAskCode:(NSString *)mobile andAccType:(uint32_t)accType andOpenAppid:(NSString*)openAppid andOpenId:(NSString*)openid andAccessToken:(NSString*)accessToken andTLSSmsRegListener:(id<TLSSmsRegListener>)listener;
  329. /**
  330. * 当使用下行短信验证手机号码时,用于请求重新发送下行短信
  331. *
  332. * @param listener - TLSSmsRegListener 回调对象
  333. *
  334. * @return 0表示调用成功;其它表示调用失败
  335. */
  336. -(int) TLSSmsRegReaskCode:(id<TLSSmsRegListener>)listener;
  337. /**
  338. * 用于提交收到的短信验证码
  339. *
  340. * @param code - 短信验证码
  341. * @param listener - TLSSmsRegListener 回调对象
  342. *
  343. * @return 0表示调用成功;其它表示调用失败
  344. */
  345. -(int) TLSSmsRegVerifyCode:(NSString *)code andTLSSmsRegListener:(id<TLSSmsRegListener>)listener;
  346. /**
  347. * 注册成功获取账号
  348. *
  349. * @param listener - TLSSmsRegListener 回调对象
  350. *
  351. * @return 0表示调用成功;其它表示调用失败
  352. */
  353. -(int) TLSSmsRegCommit:(id<TLSSmsRegListener>)listener;
  354. #pragma mark - 字符串帐号注册
  355. /***********************************************
  356. * 字符串账号注册接口
  357. **********************************************/
  358. /**
  359. * 字符串账号+密码注册接口
  360. * @param account - 用户输入的账号名,最长不得超过24字节
  361. * @param password - 用户输入的密码,密码最短8字节,最长16字节
  362. * @param listener - 回调接口 需要实现TLSStrAccountRegProtocol协议
  363. * @return 0表示调用成功;其他表示调用失败,返回码见:_TLS_RETURN_VALUES
  364. */
  365. -(int) TLSStrAccountReg:(NSString *)account andPassword:(NSString *)password andTLSStrAccountRegListener:(id<TLSStrAccountRegListener>)listener;
  366. /**
  367. * 带第三方帐号绑定注册
  368. * 字符串账号+密码注册接口
  369. * @param account - 用户输入的账号名,最长不得超过24字节
  370. * @param password - 用户输入的密码,密码最短8字节,最长16字节
  371. * @param accType - 第三方帐号类型 1:QQ 2:微信
  372. * @param openAppid - 第三方帐号appid
  373. * @param openid - 第三方账号OpenID
  374. * @param accessToken - 第三方帐号的access token
  375. * @param listener - 回调接口 需要实现TLSStrAccountRegProtocol协议
  376. * @return 0表示调用成功;其他表示调用失败,返回码见:_TLS_RETURN_VALUES
  377. */
  378. -(int) TLSStrAccountReg:(NSString *)account andPassword:(NSString *)password andAccType:(uint32_t)accType andOpenAppid:(NSString*)openAppid andOpenId:(NSString*)openid andAccessToken:(NSString*)accessToken andTLSStrAccountRegListener:(id<TLSStrAccountRegListener>)listener;
  379. #pragma mark - 第三方帐号绑定
  380. /**
  381. * 绑定第三方账号和自有账号
  382. * @param account - 自有帐号,必须已登录
  383. * @param accType - 第三方帐号类型 1:QQ 2:微信
  384. * @param openAppid - 第三方帐号appid
  385. * @param openid - 第三方账号OpenID
  386. * @param accessToken - 第三方帐号的access token
  387. * @return 0表示调用成功
  388. */
  389. -(int) TLSOpenBind:(NSString*)account andUserSig:(NSString*)userSig andAccType:(uint32_t)accType andOpenAppid:(NSString*)openAppid andOpenId:(NSString*)openid andAccessToken:(NSString*)accessToken andListener:(id<TLSOpenBindListener>)listener;
  390. /**
  391. * 查询第三方账号的绑定状态
  392. * @param accType - 第三方帐号类型 1:QQ 2:微信
  393. * @param openAppid - 第三方帐号appid
  394. * @param openid - 第三方账号OpenID
  395. * @param accessToken - 第三方帐号的access token
  396. * @return 0表示调用成功
  397. */
  398. -(int) TLSOpenQuery:(uint32_t)accType andOpenAppid:(NSString*)openAppid andOpenId:(NSString*)openid andAccessToken:(NSString*)accessToken andListener:(id<TLSOpenQueryListener>)listener;
  399. /**
  400. * 用code换取access token
  401. * 目前只支持微信,需要在管理系统中配置微信的app secret
  402. *
  403. * @param accountType 第三方帐号类型 2:微信
  404. * @param code 从微信获取的临时code
  405. * @param listener 回调
  406. *
  407. * @return 0表示调用成功
  408. */
  409. -(int) TLSOpenAccessToken:(uint32_t)accountType andCode:(NSString*)code andListener:(id<TLSOpenAccessTokenListener>)listener;
  410. #pragma mark - 第三方帐号登录
  411. /**
  412. * 使用openid+accesstoken登录
  413. *
  414. * @param accountType 账号对应的accountType QQ:1 微信:2
  415. * @param openid openid
  416. * @param appid 第三方帐号的appid
  417. * @param accessToken accessToken
  418. * @param listener 处理回调 需要实现TLSExchangeTicketListener协议
  419. * @return 0表示成功;其他表示调用失败
  420. */
  421. -(int)TLSOpenLogin:(uint32_t)accountType andOpenId:(NSString *)openid andAppid:(NSString *)appid andAccessToken:(NSString *)accessToken andTLSOpenLoginListener:(id<TLSOpenLoginListener>)listener;
  422. #pragma mark - 独立模式
  423. /**
  424. * 独立模式下换票 usersig换取A2、D2等票据
  425. *
  426. * @param sdkappid 业务在TLS申请账号集成时得到的appid
  427. * @param accountType 账号对应的accountType
  428. * @param identifier 帐号名
  429. * @param appidAt3rd 第三方帐号的appid,可选参数,没有请传入nil
  430. * @param userSig 业务后台生成的TLS用户票据
  431. * @param listener 处理回调 需要实现TLSExchangeTicketListener协议
  432. * 在本接口的成功回调时通过getSSOTicket接口获取A2、D2等票据
  433. * @return 0表示成功;其他表示调用失败
  434. */
  435. -(int)TLSExchangeTicket:(uint32_t)sdkappid andAccountType:(uint32_t)accountType andIdentifier:(NSString *)identifier andAppidAt3rd:(NSString *)appidAt3rd andUserSig:(NSString *)userSig andTLSExchangeTicketListener:(id<TLSExchangeTicketListener>)listener DEPRECATED_ATTRIBUTE;
  436. /**
  437. * 独立模式下换票 usersig换取A2、D2等票据
  438. * 在本接口的成功回调时通过getSSOTicket接口获取A2、D2等票据
  439. *
  440. * @param identifier 帐号名
  441. * @param userSig 业务后台生成的TLS用户票据
  442. * @param listener 处理回调
  443. *
  444. * @return 0表示成功;其他表示调用失败
  445. */
  446. -(int)TLSExchangeTicket:(NSString *)identifier andUserSig:(NSString *)userSig andTLSExchangeTicketListener:(id<TLSExchangeTicketListener>)listener;
  447. /**
  448. * 获取本地保存的SSO票据
  449. *
  450. * @param identifier - 用户手机号码
  451. *
  452. * @return {"A2": xxx, "A2Key": xxx, "D2": xxx, "D2Key": xxx, "tinyID":xxx}
  453. * 除了tinyID是NSString外,其他的都是NSData类型
  454. */
  455. -(NSDictionary*) getSSOTicket:(NSString *)identifier;
  456. /**
  457. *
  458. * @param identifier 帐号
  459. * @return 上次换票时间
  460. */
  461. -(int64_t)getLastRefreshTime:(NSString*)identifier;
  462. #pragma mark - 内部接口
  463. -(void)setTest:(BOOL)test;
  464. -(void)setTestHost:(NSString*)host;
  465. -(int)SSOLogin:(id<TLSGuestLoginListener>)listener;
  466. -(TLSUserInfo*)getSSOId;
  467. @end
  468. #endif