TencentOAuth.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  1. ///
  2. /// \file TencentOAuth.h
  3. /// \brief QQ互联开放平台授权登录及相关开放接口实现类
  4. ///
  5. /// Created by Tencent on 12-12-21.
  6. /// Copyright (c) 2012年 Tencent. All rights reserved.
  7. ///
  8. #import <UIKit/UIKit.h>
  9. #import "sdkdef.h"
  10. #import "TencentOAuthObject.h"
  11. #import "TencentApiInterface.h"
  12. @protocol TencentSessionDelegate;
  13. @protocol TencentLoginDelegate;
  14. @protocol TencentApiInterfaceDelegate;
  15. @protocol TencentWebViewDelegate;
  16. @class TencentApiReq;
  17. @class TencentApiResp;
  18. typedef enum
  19. {
  20. kTencentNotAuthorizeState,
  21. kTencentSSOAuthorizeState,
  22. kTencentWebviewAuthorzieState,
  23. } TencentAuthorizeState;
  24. typedef enum
  25. {
  26. kAuthModeClientSideToken,
  27. kAuthModeServerSideCode,
  28. } TencentAuthMode;
  29. #pragma mark - TencentOAuth(授权登录及相关开放接口调用)
  30. /**
  31. * \brief TencentOpenAPI授权登录及相关开放接口调用
  32. *
  33. * TencentOAuth实现授权登录逻辑以及相关开放接口的请求调用
  34. */
  35. @interface TencentOAuth : NSObject
  36. {
  37. NSMutableDictionary* _apiRequests;
  38. NSString* _accessToken;
  39. NSDate* _expirationDate;
  40. id<TencentSessionDelegate> _sessionDelegate;
  41. NSString* _localAppId;
  42. NSString* _openId;
  43. NSString* _redirectURI;
  44. NSArray* _permissions;
  45. }
  46. /** Access Token凭证,用于后续访问各开放接口 */
  47. @property(nonatomic, copy) NSString* accessToken;
  48. /** Access Token的失效期 */
  49. @property(nonatomic, copy) NSDate* expirationDate;
  50. /** 已实现的开放接口的回调委托对象 */
  51. @property(nonatomic, assign) id<TencentSessionDelegate> sessionDelegate;
  52. /** 第三方应用在开发过程中设置的URLSchema,用于浏览器登录后后跳到第三方应用 */
  53. @property(nonatomic, copy) NSString* localAppId;
  54. /** 用户授权登录后对该用户的唯一标识 */
  55. @property(nonatomic, copy) NSString* openId;
  56. /** 用户登录成功过后的跳转页面地址 */
  57. @property(nonatomic, copy) NSString* redirectURI;
  58. /** 第三方应用在互联开放平台申请的appID */
  59. @property(nonatomic, retain) NSString* appId;
  60. /** 主要是互娱的游戏设置uin */
  61. @property(nonatomic, retain) NSString* uin;
  62. /** 主要是互娱的游戏设置鉴定票据 */
  63. @property(nonatomic, retain) NSString* skey;
  64. /** 登陆透传的数据 */
  65. @property(nonatomic, copy) NSDictionary* passData;
  66. /** 授权方式(Client Side Token或者Server Side Code) */
  67. @property(nonatomic, assign) TencentAuthMode authMode;
  68. /** union id */
  69. @property(nonatomic, retain) NSString* unionid;
  70. /** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/
  71. @property(nonatomic, assign) TencentAuthShareType authShareType;
  72. /**
  73. * 用来获得当前sdk的版本号
  74. * \return 返回sdk版本号
  75. **/
  76. + (NSString*)sdkVersion;
  77. /**
  78. * 用来获得当前sdk的小版本号
  79. * \return 返回sdk小版本号
  80. **/
  81. + (NSString*)sdkSubVersion;
  82. /**
  83. * 用来获得当前sdk的是否精简版
  84. * \return 返回YES表示精简版
  85. **/
  86. + (BOOL)isLiteSDK;
  87. /**
  88. * 主要是用来帮助判断是否有登陆被发起,但是还没有过返回结果
  89. * \return
  90. * kTencentNotAuthorizeState:无授权
  91. * kTencentSSOAuthorizeState:有人发起了sso授权但无返回
  92. * kTencentWebviewAuthorzieState:有人发起了webview授权还未返回
  93. **/
  94. + (TencentAuthorizeState *)authorizeState;
  95. /**
  96. * 用来获得当前手机qq的版本号
  97. * \return 返回手机qq版本号
  98. **/
  99. + (QQVersion)iphoneQQVersion;
  100. /**
  101. * 用来获得当前手机TIM的版本号
  102. * \return 返回手机qq版本号
  103. **/
  104. + (QQVersion)iphoneTIMVersion;
  105. /**
  106. * 初始化TencentOAuth对象
  107. * \param appId 第三方应用在互联开放平台申请的唯一标识
  108. * \param delegate 第三方应用用于接收请求返回结果的委托对象
  109. * \return 初始化后的授权登录对象
  110. */
  111. - (id)initWithAppId:(NSString *)appId
  112. andDelegate:(id<TencentSessionDelegate>)delegate;
  113. /**
  114. * 判断用户手机上是否安装手机QQ
  115. * \return YES:安装 NO:没安装
  116. */
  117. + (BOOL)iphoneQQInstalled;
  118. /**
  119. * 判断用户手机上是否安装手机TIM
  120. * \return YES:安装 NO:没安装
  121. */
  122. + (BOOL)iphoneTIMInstalled;
  123. /**
  124. * 判断用户手机上的手机QQ是否支持SSO登录
  125. * \return YES:支持 NO:不支持
  126. */
  127. + (BOOL)iphoneQQSupportSSOLogin;
  128. /**
  129. * 判断用户手机上的手机TIM是否支持SSO登录
  130. * \return YES:支持 NO:不支持
  131. */
  132. + (BOOL)iphoneTIMSupportSSOLogin;
  133. /**
  134. * 判断用户手机上是否安装手机QZone
  135. * \return YES:安装 NO:没安装
  136. */
  137. + (BOOL)iphoneQZoneInstalled;
  138. /**
  139. * 判断用户手机上的手机QZone是否支持SSO登录
  140. * \return YES:支持 NO:不支持
  141. */
  142. + (BOOL)iphoneQZoneSupportSSOLogin;
  143. /**
  144. * 登录授权
  145. *
  146. * \param permissions 授权信息列
  147. */
  148. - (BOOL)authorize:(NSArray *)permissions;
  149. /**
  150. * 登录授权
  151. * \param permissions 授权信息列表
  152. * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b>
  153. */
  154. - (BOOL)authorize:(NSArray *)permissions
  155. inSafari:(BOOL)bInSafari;
  156. /**
  157. * 登录授权
  158. * \param permissions 授权信息列表
  159. * \param localAppId 应用APPID
  160. * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b>
  161. */
  162. - (BOOL)authorize:(NSArray *)permissions
  163. localAppId:(NSString *)localAppId
  164. inSafari:(BOOL)bInSafari;
  165. /**
  166. * 增量授权,因用户没有授予相应接口调用的权限,需要用户确认是否授权
  167. * \param permissions 需增量授权的信息列表
  168. * \return 增量授权调用是否成功
  169. */
  170. - (BOOL)incrAuthWithPermissions:(NSArray *)permissions;
  171. /**
  172. * 重新授权,因token废除或失效导致接口调用失败,需用户重新授权
  173. * \param permissions 授权信息列表,同登录授权
  174. * \return 授权调用是否成功
  175. */
  176. - (BOOL)reauthorizeWithPermissions:(NSArray *)permissions;
  177. /**
  178. * 获取UnindID,可以根据UnindID的比较来确定OpenID是否属于同一个用户
  179. * \return NO未登录,信息不足;YES条件满足,发送请求成功,请等待回调
  180. */
  181. - (BOOL)RequestUnionId;
  182. /**
  183. * (静态方法)处理应用拉起协议
  184. * \param url 处理被其他应用呼起时的逻辑
  185. * \return 处理结果,YES表示成功,NO表示失败
  186. */
  187. + (BOOL)HandleOpenURL:(NSURL *)url;
  188. /**
  189. * (静态方法)sdk是否可以处理应用拉起协议
  190. * \param url 处理被其他应用呼起时的逻辑
  191. * \return 处理结果,YES表示可以 NO表示不行
  192. */
  193. + (BOOL)CanHandleOpenURL:(NSURL *)url;
  194. /**
  195. * (静态方法)获取TencentOAuth调用的上一次错误信息
  196. */
  197. + (NSString *)getLastErrorMsg;
  198. /**
  199. * 以Server Side Code模式授权登录时,通过此接口获取返回的code值;
  200. * 以Client Side Token模式授权登录时,忽略此接口。
  201. */
  202. - (NSString *)getServerSideCode;
  203. /**
  204. * 退出登录(退出登录后,TecentOAuth失效,需要重新初始化)
  205. * \param delegate 第三方应用用于接收请求返回结果的委托对象
  206. */
  207. - (void)logout:(id<TencentSessionDelegate>)delegate;
  208. /**
  209. * 判断登录态是否有效
  210. * \return 处理结果,YES表示有效,NO表示无效,请用户重新登录授权
  211. */
  212. - (BOOL)isSessionValid;
  213. /**
  214. * 获取用户个人信息
  215. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  216. */
  217. - (BOOL)getUserInfo;
  218. /**
  219. * SDK内置webview实现定向分享时,第三方应用可以根据应用是否在白名单里来开启该配置开关,默认为关闭;
  220. * 在白名单里的应用调用该接口后,即打开sdk内置webview的二级白名单开关(相对与sdk后台的白名单),
  221. * 那么在sdk后台白名单校验请求失败的情况下,会继续先尝试采用内置webview进行分享。
  222. */
  223. - (void)openSDKWebViewQQShareEnable;
  224. /**
  225. * 获取用户QZone相册列表
  226. * \attention 需\ref apply_perm
  227. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  228. */
  229. - (BOOL)getListAlbum;
  230. /**
  231. * 获取用户QZone相片列表
  232. * \attention 需\ref apply_perm
  233. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCListPhotoDic
  234. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  235. */
  236. - (BOOL)getListPhotoWithParams:(NSMutableDictionary *)params;
  237. /**
  238. * 分享到QZone
  239. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCAddShareDic
  240. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  241. */
  242. - (BOOL)addShareWithParams:(NSMutableDictionary *)params;
  243. /**
  244. * 上传照片到QZone指定相册
  245. * \attention 需\ref apply_perm
  246. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCUploadPicDic
  247. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  248. */
  249. - (BOOL)uploadPicWithParams:(NSMutableDictionary *)params;
  250. /**
  251. * 在QZone相册中创建一个新的相册
  252. * \attention 需\ref apply_perm
  253. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCAddAlbumDic
  254. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  255. */
  256. - (BOOL)addAlbumWithParams:(NSMutableDictionary *)params;
  257. /**
  258. * 检查是否是QZone某个用户的粉丝
  259. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCCheckPageFansDic
  260. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  261. */
  262. - (BOOL)checkPageFansWithParams:(NSMutableDictionary *)params;
  263. /**
  264. * 在QZone中发表一篇日志
  265. * \attention 需\ref apply_perm
  266. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCAddOneBlogDic
  267. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  268. */
  269. - (BOOL)addOneBlogWithParams:(NSMutableDictionary *)params;
  270. /**
  271. * 在QZone中发表一条说说
  272. * \attention 需\ref apply_perm
  273. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCAddTopicDic
  274. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  275. */
  276. - (BOOL)addTopicWithParams:(NSMutableDictionary *)params;
  277. /**
  278. * 设置QQ头像 使用默认的效果处理设置头像的界面
  279. * \attention 需\ref apply_perm
  280. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCSetUserHeadpic
  281. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  282. */
  283. - (BOOL)setUserHeadpic:(NSMutableDictionary *)params;
  284. /**
  285. * 设置QQ头像 会返回设置头像由第三方自己处理界面的弹出方式
  286. * \attention 需\ref apply_perm
  287. * \param params 参数字典,字典的关键字参见TencentOAuthObject.h中的\ref TCSetUserHeadpic
  288. * \param viewController 设置头像的界面
  289. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  290. */
  291. - (BOOL)setUserHeadpic:(NSMutableDictionary *)params andViewController:(UIViewController **)viewController;
  292. /**
  293. * 获取QQ会员信息(仅包括是否为QQ会员,是否为年费QQ会员)
  294. * \attention 需\ref apply_perm
  295. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  296. */
  297. - (BOOL)getVipInfo;
  298. /**
  299. * 获取QQ会员详细信息
  300. * \attention 需\ref apply_perm
  301. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  302. */
  303. - (BOOL)getVipRichInfo;
  304. /**
  305. * QZone定向分享,可以@到具体好友,完成后将触发responseDidReceived:forMessage:回调,message:“SendStory”
  306. * \param params 参数字典
  307. * \param fopenIdArray 第三方应用预传人好友列表,好友以openid标识
  308. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  309. */
  310. - (BOOL)sendStory:(NSMutableDictionary *)params friendList:(NSArray *)fopenIdArray;
  311. /**
  312. * 发送应用邀请,完成后将触发responseDidReceived:forMessage:回调,message:“AppInvitation”
  313. * \param desc 应用的描述文字,不超过35字符,如果为nil或@“”则显示默认描述
  314. * \param imageUrl 应用的图标,如果为nil或者@“”则显示默认图标
  315. * \param source 透传参数,由开发者自定义该参数内容
  316. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  317. */
  318. - (BOOL)sendAppInvitationWithDescription:(NSString *)desc imageURL:(NSString *)imageUrl source:(NSString *)source;
  319. /**
  320. * 发起PK或者发送炫耀,完成后将触发responseDidReceived:forMessage:回调,message:“AppChallenge”
  321. * \param receiver 必须指定一位进行PK或者炫耀的好友,填写其OpenID,填写多个OpenID将截取第一个
  322. * \param type 类型,"pk"或者“brag”
  323. * \param imageUrl 炫耀/挑战场景图的URL
  324. * \param message 炫耀/挑战中的内容描述,不超过50个字符,超过限制则自动截断
  325. * \param source 透传参数,由开发者自定义该参数内容
  326. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  327. */
  328. - (BOOL)sendChallenge:(NSString *)receiver type:(NSString *)type imageURL:(NSString *)imageUrl message:(NSString *)message source:(NSString *)source;
  329. /**
  330. * 赠送或者请求礼物,完成后将触发responseDidReceived:forMessage:回调,message:“AppGiftRequest”
  331. * \param receiver 赠送或者请求礼物的好友的OpenID,支持填写多个,OpenID之用","分隔,为nil时将由用户通过好友选择器选择好友
  332. * \param exclude 用户通过好友选择器选择好友场景下,希望排除的好友(不显示在好友选择器)
  333. * \param specified 用户通过好友选择器选择好友场景下,希望出现的指定好友
  334. * \param only 是否只显示specified指定的好友
  335. * \param type 类型,"request"或者“freegift”
  336. * \param title 免费礼物或请求名称,不超过6个字符
  337. * \param message 礼物或请求的默认赠言,控制在35个汉字以内,超过限制自动截断
  338. * \param imageUrl 请求或礼物配图的URL,如果不传,则默认在弹框中显示应用的icon
  339. * \param source 透传参数,由开发者自定义该参数内容
  340. * \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录
  341. */
  342. - (BOOL)sendGiftRequest:(NSString *)receiver exclude:(NSString *)exclude specified:(NSString *)specified only:(BOOL)only type:(NSString *)type title:(NSString *)title message:(NSString *)message imageURL:(NSString *)imageUrl source:(NSString *)source;
  343. /**
  344. * 退出指定API调用
  345. * \param userData 用户调用某条API的时候传入的保留参数
  346. * \return 处理结果,YES表示成功 NO表示失败
  347. */
  348. - (BOOL)cancel:(id)userData;
  349. /**
  350. * CGI类任务创建接口
  351. * \param apiURL CGI请求的URL地址
  352. * \param method CGI请求方式:"GET","POST"
  353. * \param params CGI请求参数字典
  354. * \param callback CGI请求结果的回调接口对象
  355. * \return CGI请求任务实例,用于取消任务,返回nil代表任务创建失败
  356. */
  357. - (TCAPIRequest *)cgiRequestWithURL:(NSURL *)apiURL method:(NSString *)method params:(NSDictionary *)params callback:(id<TCAPIRequestDelegate>)callback;
  358. /**
  359. * TencentOpenApi发送任务统一接口
  360. * \param request 请求发送的任务
  361. * \param callback 任务发送后的回调地址
  362. */
  363. - (BOOL)sendAPIRequest:(TCAPIRequest *)request callback:(id<TCAPIRequestDelegate>)callback;
  364. - (NSString *)getUserOpenID;
  365. @end
  366. #pragma mark - TencentLoginDelegate(授权登录回调协议)
  367. /**
  368. * \brief TencentLoginDelegate iOS Open SDK 1.3 API回调协议
  369. *
  370. * 第三方应用实现登录的回调协议
  371. */
  372. @protocol TencentLoginDelegate <NSObject>
  373. @required
  374. /**
  375. * 登录成功后的回调
  376. */
  377. - (void)tencentDidLogin;
  378. /**
  379. * 登录失败后的回调
  380. * \param cancelled 代表用户是否主动退出登录
  381. */
  382. - (void)tencentDidNotLogin:(BOOL)cancelled;
  383. /**
  384. * 登录时网络有问题的回调
  385. */
  386. - (void)tencentDidNotNetWork;
  387. @optional
  388. /**
  389. * 登录时权限信息的获得
  390. */
  391. - (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams;
  392. /**
  393. * unionID获得
  394. */
  395. - (void)didGetUnionID;
  396. @end
  397. #pragma mark - TencentSessionDelegate(开放接口回调协议)
  398. /**
  399. * \brief TencentSessionDelegate iOS Open SDK 1.3 API回调协议
  400. *
  401. * 第三方应用需要实现每条需要调用的API的回调协议
  402. */
  403. @protocol TencentSessionDelegate<NSObject, TencentLoginDelegate,
  404. TencentApiInterfaceDelegate,
  405. TencentWebViewDelegate>
  406. @optional
  407. /**
  408. * 退出登录的回调
  409. */
  410. - (void)tencentDidLogout;
  411. /**
  412. * 因用户未授予相应权限而需要执行增量授权。在用户调用某个api接口时,如果服务器返回操作未被授权,则触发该回调协议接口,由第三方决定是否跳转到增量授权页面,让用户重新授权。
  413. * \param tencentOAuth 登录授权对象。
  414. * \param permissions 需增量授权的权限列表。
  415. * \return 是否仍然回调返回原始的api请求结果。
  416. * \note 不实现该协议接口则默认为不开启增量授权流程。若需要增量授权请调用\ref TencentOAuth#incrAuthWithPermissions: \n注意:增量授权时用户可能会修改登录的帐号
  417. */
  418. - (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions;
  419. /**
  420. * [该逻辑未实现]因token失效而需要执行重新登录授权。在用户调用某个api接口时,如果服务器返回token失效,则触发该回调协议接口,由第三方决定是否跳转到登录授权页面,让用户重新授权。
  421. * \param tencentOAuth 登录授权对象。
  422. * \return 是否仍然回调返回原始的api请求结果。
  423. * \note 不实现该协议接口则默认为不开启重新登录授权流程。若需要重新登录授权请调用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登录授权时用户可能会修改登录的帐号
  424. */
  425. - (BOOL)tencentNeedPerformReAuth:(TencentOAuth *)tencentOAuth;
  426. /**
  427. * 用户通过增量授权流程重新授权登录,token及有效期限等信息已被更新。
  428. * \param tencentOAuth token及有效期限等信息更新后的授权实例对象
  429. * \note 第三方应用需更新已保存的token及有效期限等信息。
  430. */
  431. - (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth;
  432. /**
  433. * 用户增量授权过程中因取消或网络问题导致授权失败
  434. * \param reason 授权失败原因,具体失败原因参见sdkdef.h文件中\ref UpdateFailType
  435. */
  436. - (void)tencentFailedUpdate:(UpdateFailType)reason;
  437. /**
  438. * 获取用户个人信息回调
  439. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  440. * \remarks 正确返回示例: \snippet example/getUserInfoResponse.exp success
  441. * 错误返回示例: \snippet example/getUserInfoResponse.exp fail
  442. */
  443. - (void)getUserInfoResponse:(APIResponse*) response;
  444. /**
  445. * 获取用户QZone相册列表回调
  446. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  447. * \remarks 正确返回示例: \snippet example/getListAlbumResponse.exp success
  448. * 错误返回示例: \snippet example/getListAlbumResponse.exp fail
  449. */
  450. - (void)getListAlbumResponse:(APIResponse*) response;
  451. /**
  452. * 获取用户QZone相片列表
  453. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  454. * \remarks 正确返回示例: \snippet example/getListPhotoResponse.exp success
  455. * 错误返回示例: \snippet example/getListPhotoResponse.exp fail
  456. */
  457. - (void)getListPhotoResponse:(APIResponse*) response;
  458. /**
  459. * 检查是否是QZone某个用户的粉丝回调
  460. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  461. * \remarks 正确返回示例: \snippet example/checkPageFansResponse.exp success
  462. * 错误返回示例: \snippet example/checkPageFansResponse.exp fail
  463. */
  464. - (void)checkPageFansResponse:(APIResponse*) response;
  465. /**
  466. * 分享到QZone回调
  467. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  468. * \remarks 正确返回示例: \snippet example/addShareResponse.exp success
  469. * 错误返回示例: \snippet example/addShareResponse.exp fail
  470. */
  471. - (void)addShareResponse:(APIResponse*) response;
  472. /**
  473. * 在QZone相册中创建一个新的相册回调
  474. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  475. * \remarks 正确返回示例: \snippet example/addAlbumResponse.exp success
  476. * 错误返回示例: \snippet example/addAlbumResponse.exp fail
  477. */
  478. - (void)addAlbumResponse:(APIResponse*) response;
  479. /**
  480. * 上传照片到QZone指定相册回调
  481. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  482. * \remarks 正确返回示例: \snippet example/uploadPicResponse.exp success
  483. * 错误返回示例: \snippet example/uploadPicResponse.exp fail
  484. */
  485. - (void)uploadPicResponse:(APIResponse*) response;
  486. /**
  487. * 在QZone中发表一篇日志回调
  488. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  489. * \remarks 正确返回示例: \snippet example/addOneBlogResponse.exp success
  490. * 错误返回示例: \snippet example/addOneBlogResponse.exp fail
  491. */
  492. - (void)addOneBlogResponse:(APIResponse*) response;
  493. /**
  494. * 在QZone中发表一条说说回调
  495. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  496. * \remarks 正确返回示例: \snippet example/addTopicResponse.exp success
  497. * 错误返回示例: \snippet example/addTopicResponse.exp fail
  498. */
  499. - (void)addTopicResponse:(APIResponse*) response;
  500. /**
  501. * 设置QQ头像回调
  502. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  503. * \remarks 正确返回示例: \snippet example/setUserHeadpicResponse.exp success
  504. * 错误返回示例: \snippet example/setUserHeadpicResponse.exp fail
  505. */
  506. - (void)setUserHeadpicResponse:(APIResponse*) response;
  507. /**
  508. * 获取QQ会员信息回调
  509. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  510. * \remarks 正确返回示例: \snippet example/getVipInfoResponse.exp success
  511. * 错误返回示例: \snippet example/getVipInfoResponse.exp fail
  512. */
  513. - (void)getVipInfoResponse:(APIResponse*) response;
  514. /**
  515. * 获取QQ会员详细信息回调
  516. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  517. */
  518. - (void)getVipRichInfoResponse:(APIResponse*) response;
  519. /**
  520. * sendStory分享的回调(已废弃,使用responseDidReceived:forMessage:)
  521. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  522. */
  523. - (void)sendStoryResponse:(APIResponse*) response;
  524. /**
  525. * 社交API统一回调接口
  526. * \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse
  527. * \param message 响应的消息,目前支持‘SendStory’,‘AppInvitation’,‘AppChallenge’,‘AppGiftRequest’
  528. */
  529. - (void)responseDidReceived:(APIResponse*)response forMessage:(NSString *)message;
  530. /**
  531. * post请求的上传进度
  532. * \param tencentOAuth 返回回调的tencentOAuth对象
  533. * \param bytesWritten 本次回调上传的数据字节数
  534. * \param totalBytesWritten 总共已经上传的字节数
  535. * \param totalBytesExpectedToWrite 总共需要上传的字节数
  536. * \param userData 用户自定义数据
  537. */
  538. - (void)tencentOAuth:(TencentOAuth *)tencentOAuth didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite userData:(id)userData;
  539. /**
  540. * 通知第三方界面需要被关闭
  541. * \param tencentOAuth 返回回调的tencentOAuth对象
  542. * \param viewController 需要关闭的viewController
  543. */
  544. - (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController;
  545. @end
  546. #pragma mark - TencentWebViewDelegate(H5登录webview旋转方向回调)
  547. /**
  548. * \brief TencentWebViewDelegate: H5登录webview旋转方向回调协议
  549. *
  550. * 第三方应用可以根据自己APP的旋转方向限制,通过此协议设置
  551. */
  552. @protocol TencentWebViewDelegate <NSObject>
  553. @optional
  554. - (BOOL) tencentWebViewShouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;
  555. - (NSUInteger) tencentWebViewSupportedInterfaceOrientationsWithWebkit;
  556. - (BOOL) tencentWebViewShouldAutorotateWithWebkit;
  557. @end