commit | author | age
|
eec5d6
|
1 |
/// |
L |
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 |
|
|
9 |
#import <UIKit/UIKit.h> |
ed1e9e
|
10 |
#import "SDKDef.h" |
eec5d6
|
11 |
|
L |
12 |
@protocol TencentSessionDelegate; |
|
13 |
@protocol TencentLoginDelegate; |
|
14 |
@protocol TencentApiInterfaceDelegate; |
|
15 |
@protocol TencentWebViewDelegate; |
|
16 |
|
|
17 |
@class TencentApiReq; |
|
18 |
@class TencentApiResp; |
|
19 |
|
|
20 |
typedef NS_ENUM(NSUInteger, TencentAuthorizeState) { |
|
21 |
kTencentNotAuthorizeState, |
|
22 |
kTencentSSOAuthorizeState, |
|
23 |
kTencentWebviewAuthorzieState, |
|
24 |
}; |
|
25 |
|
|
26 |
typedef NS_ENUM(NSUInteger, TencentAuthMode) { |
|
27 |
kAuthModeClientSideToken, |
|
28 |
kAuthModeServerSideCode, |
|
29 |
}; |
|
30 |
|
|
31 |
#pragma mark - TencentOAuth(授权登录及相关开放接口调用) |
|
32 |
|
|
33 |
/** |
|
34 |
* \brief TencentOpenAPI授权登录及相关开放接口调用 |
|
35 |
* |
|
36 |
* TencentOAuth实现授权登录逻辑以及相关开放接口的请求调用 |
|
37 |
*/ |
|
38 |
@interface TencentOAuth : NSObject |
|
39 |
{ |
7acec9
|
40 |
NSMutableDictionary *_apiRequests; |
L |
41 |
NSString *_accessToken; |
|
42 |
NSDate *_expirationDate; |
eec5d6
|
43 |
id<TencentSessionDelegate> _sessionDelegate; |
7acec9
|
44 |
NSString *_localAppId; |
L |
45 |
NSString *_openId; |
|
46 |
NSString *_redirectURI; |
|
47 |
NSArray *_permissions; |
eec5d6
|
48 |
} |
L |
49 |
|
|
50 |
/** Access Token凭证,用于后续访问各开放接口 */ |
7acec9
|
51 |
@property(nonatomic, copy) NSString *accessToken; |
eec5d6
|
52 |
|
L |
53 |
/** Access Token的失效期 */ |
7acec9
|
54 |
@property(nonatomic, copy) NSDate *expirationDate; |
eec5d6
|
55 |
|
L |
56 |
/** 已实现的开放接口的回调委托对象 */ |
7acec9
|
57 |
@property(nonatomic, weak) id<TencentSessionDelegate> sessionDelegate; |
eec5d6
|
58 |
|
L |
59 |
/** 第三方应用在开发过程中设置的URLSchema,用于浏览器登录后后跳到第三方应用 */ |
7acec9
|
60 |
@property(nonatomic, copy) NSString *localAppId; |
eec5d6
|
61 |
|
L |
62 |
/** 用户授权登录后对该用户的唯一标识 */ |
7acec9
|
63 |
@property(nonatomic, copy) NSString *openId; |
eec5d6
|
64 |
|
L |
65 |
/** 用户登录成功过后的跳转页面地址 */ |
7acec9
|
66 |
@property(nonatomic, copy) NSString *redirectURI; |
eec5d6
|
67 |
|
L |
68 |
/** 第三方应用在互联开放平台申请的appID */ |
7acec9
|
69 |
@property(nonatomic, retain) NSString *appId; |
eec5d6
|
70 |
|
L |
71 |
/** 第三方应用在互联开放平台注册的UniversalLink */ |
7acec9
|
72 |
@property(nonatomic, retain) NSString *universalLink; |
eec5d6
|
73 |
|
L |
74 |
/** 主要是互娱的游戏设置uin */ |
7acec9
|
75 |
@property(nonatomic, retain) NSString *uin; |
eec5d6
|
76 |
|
L |
77 |
/** 主要是互娱的游戏设置鉴定票据 */ |
7acec9
|
78 |
@property(nonatomic, retain) NSString *skey; |
eec5d6
|
79 |
|
L |
80 |
/** 登陆透传的数据 */ |
7acec9
|
81 |
@property(nonatomic, copy) NSDictionary *passData; |
eec5d6
|
82 |
|
L |
83 |
/** 授权方式(Client Side Token或者Server Side Code) */ |
|
84 |
@property(nonatomic, assign) TencentAuthMode authMode; |
|
85 |
|
|
86 |
/** union id */ |
7acec9
|
87 |
@property(nonatomic, retain) NSString *unionid; |
eec5d6
|
88 |
|
L |
89 |
/** 第三方在授权登录/分享 时选择 QQ,还是TIM 。在授权前一定要指定其中一个类型*/ |
|
90 |
@property(nonatomic, assign) TencentAuthShareType authShareType; |
7acec9
|
91 |
|
ed1e9e
|
92 |
/** SDK打开web登录页,支持自动填充账号 */ |
L |
93 |
@property (nonatomic, copy) NSString *defaultUin; |
|
94 |
|
eec5d6
|
95 |
/** |
L |
96 |
* 获取上次登录得到的token |
|
97 |
* |
|
98 |
**/ |
|
99 |
- (NSString *)getCachedToken; |
|
100 |
|
|
101 |
/** |
|
102 |
* 获取上次登录得到的openid |
|
103 |
* |
|
104 |
**/ |
|
105 |
- (NSString *)getCachedOpenID; |
|
106 |
|
|
107 |
/** |
|
108 |
* 获取上次登录的token过期日期 |
|
109 |
* |
|
110 |
**/ |
|
111 |
- (NSDate *)getCachedExpirationDate; |
|
112 |
|
|
113 |
/** |
|
114 |
* 上次登录的token是否过期(本地判断) |
|
115 |
**/ |
|
116 |
- (BOOL)isCachedTokenValid; |
|
117 |
|
|
118 |
/** |
|
119 |
* 删除上次登录登录的token信息 |
|
120 |
* |
|
121 |
**/ |
|
122 |
- (BOOL)deleteCachedToken; |
|
123 |
|
|
124 |
/** |
22eb75
|
125 |
* 删除openid |
L |
126 |
* |
|
127 |
**/ |
|
128 |
- (void)deleteOpenId; |
|
129 |
|
|
130 |
/** |
eec5d6
|
131 |
* 用来获得当前sdk的版本号 |
L |
132 |
* \return 返回sdk版本号 |
|
133 |
**/ |
|
134 |
|
7acec9
|
135 |
+ (NSString *)sdkVersion; |
eec5d6
|
136 |
|
L |
137 |
/** |
|
138 |
* 用来获得当前sdk的小版本号 |
|
139 |
* \return 返回sdk小版本号 |
|
140 |
**/ |
|
141 |
|
7acec9
|
142 |
+ (NSString *)sdkSubVersion; |
eec5d6
|
143 |
|
L |
144 |
/** |
|
145 |
* 用来获得当前sdk的是否精简版 |
|
146 |
* \return 返回YES表示精简版 |
|
147 |
**/ |
|
148 |
|
|
149 |
+ (BOOL)isLiteSDK; |
|
150 |
|
|
151 |
/** |
|
152 |
* 主要是用来帮助判断是否有登陆被发起,但是还没有过返回结果 |
|
153 |
* \return |
|
154 |
* kTencentNotAuthorizeState:无授权 |
|
155 |
* kTencentSSOAuthorizeState:有人发起了sso授权但无返回 |
|
156 |
* kTencentWebviewAuthorzieState:有人发起了webview授权还未返回 |
|
157 |
**/ |
|
158 |
|
|
159 |
+ (TencentAuthorizeState *)authorizeState; |
|
160 |
|
|
161 |
/** |
|
162 |
* 初始化TencentOAuth对象 |
8822d6
|
163 |
* \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 |
L |
164 |
* \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 |
eec5d6
|
165 |
* \return 初始化后的授权登录对象 |
L |
166 |
*/ |
|
167 |
- (id)initWithAppId:(NSString *)appId |
|
168 |
andDelegate:(id<TencentSessionDelegate>)delegate; |
|
169 |
|
|
170 |
/** |
|
171 |
* 初始化TencentOAuth对象(>=3.3.7) |
8822d6
|
172 |
* \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 |
L |
173 |
* \param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成universallink,详见官网说明) |
|
174 |
* \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 |
eec5d6
|
175 |
* \return 初始化后的授权登录对象 |
8822d6
|
176 |
* |
L |
177 |
****【使用说明】***** |
|
178 |
* 1、支持BundleId与UniversalLink的一一对应,主要目的“是为了解决应用的iPhone版本和iPad HD版本共用同一个AppId,导致同时安装情况下的跳转问题"。 |
|
179 |
* 2 、由于手Q版本在 >=8.1.8 后才支持了这种对应方式,所以一旦使用,“务必做到”及时知会用户升级手Q版本。 |
|
180 |
**** |
eec5d6
|
181 |
*/ |
L |
182 |
- (id)initWithAppId:(NSString *)appId |
|
183 |
andUniversalLink:(NSString *)universalLink |
|
184 |
andDelegate:(id<TencentSessionDelegate>)delegate; |
8822d6
|
185 |
|
L |
186 |
/** |
|
187 |
* 初始化TencentOAuth对象(>=3.3.8) |
|
188 |
* \param appId 不可为nil,第三方应用在互联开放平台申请的唯一标识 |
|
189 |
* \param enabled 默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。 |
|
190 |
* \param universalLink 可以为nil,第三方应用在互联开放平台注册的UniversalLink,和bundleID一一对应(当为nil时,互联平台会按规则生成UniversalLink,详见官网说明) |
|
191 |
* \param delegate 不可为nil,第三方应用用于接收请求返回结果的委托对象 |
|
192 |
* \return 初始化后的授权登录对象 |
|
193 |
* |
|
194 |
*****【使用说明】***** |
|
195 |
* 1、支持sdk与手Q的交互切换为UniversalLink模式,主要目的"是为了避免手Q的UrlScheme被其他应用抢注后,导致sdk接口功能受到影响"。 |
|
196 |
* 2 、由于手Q版本在 >=8.1.3 后才适配了UniversalLink,所以一旦开启了enabled开关,“务必做到”及时知会用户升级手Q版本。 |
|
197 |
***** |
|
198 |
*/ |
|
199 |
- (id)initWithAppId:(NSString *)appId |
|
200 |
enableUniveralLink:(BOOL)enabled |
|
201 |
universalLink:(NSString *)universalLink |
|
202 |
delegate:(id<TencentSessionDelegate>)delegate; |
eec5d6
|
203 |
|
L |
204 |
/** |
7acec9
|
205 |
* 设置用户是否已经授权同意授权隐私协议,在主体应用中,用户同意授权隐私协议后再初始化互联SDK,默认未同意授权 |
L |
206 |
* 注意:如未同意授权隐私协议,则互联SDK的所有功能都无法使用,包括初始化!!! |
|
207 |
* 从3.5.7版本开始支持该方法 |
|
208 |
* |
|
209 |
* @param isAgreedAuthorization 是否已经授权,isAgreedAuthorization=YES, 表示已经同意授权;isAgreedAuthorization=NO,表示未同意授权,互联SDK的所有功能都无法使用 |
|
210 |
*/ |
|
211 |
+ (void)setIsUserAgreedAuthorization:(BOOL)isUserAgreedAuthorization; |
|
212 |
|
|
213 |
/** |
|
214 |
* 获取当前用户是否已经同意授权隐私协议 |
|
215 |
* 从3.5.7版本开始支持该方法 |
|
216 |
*/ |
|
217 |
+ (BOOL)isUserAgreedAuthorization; |
|
218 |
|
|
219 |
/** |
eec5d6
|
220 |
* 判断用户手机上是否安装手机QQ |
L |
221 |
* \return YES:安装 NO:没安装 |
|
222 |
* |
|
223 |
* \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 |
|
224 |
* 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 |
|
225 |
* 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 |
|
226 |
*/ |
|
227 |
+ (BOOL)iphoneQQInstalled; |
|
228 |
|
|
229 |
/** |
|
230 |
* 判断用户手机上是否安装手机TIM |
|
231 |
* \return YES:安装 NO:没安装 |
|
232 |
* |
|
233 |
* \note SDK目前已经支持QQ、TIM授权登录及分享功能, 会按照QQ>TIM的顺序进行调用。 |
|
234 |
* 只要用户安装了QQ、TIM中任意一个应用,都可为第三方应用进行授权登录、分享功能。 |
|
235 |
* 第三方应用在接入SDK时不需要判断是否安装QQ、TIM。若有判断安装QQ、TIM的逻辑建议移除。 |
|
236 |
*/ |
|
237 |
+ (BOOL)iphoneTIMInstalled; |
|
238 |
|
|
239 |
/** |
|
240 |
* 登录授权 |
|
241 |
* |
|
242 |
* \param permissions 授权信息列 |
|
243 |
*/ |
|
244 |
- (BOOL)authorize:(NSArray *)permissions; |
|
245 |
|
|
246 |
/** |
|
247 |
* 登录授权 |
|
248 |
* \param permissions 授权信息列表 |
|
249 |
* \param localAppId 应用APPID |
|
250 |
*/ |
|
251 |
- (BOOL)authorize:(NSArray *)permissions |
8822d6
|
252 |
localAppId:(NSString *)localAppId; |
eec5d6
|
253 |
|
L |
254 |
/** |
|
255 |
* 登录授权<web为二维码扫码方式> |
|
256 |
* |
|
257 |
* \param permissions 授权信息列 |
|
258 |
*/ |
|
259 |
- (BOOL)authorizeWithQRlogin:(NSArray *)permissions; |
|
260 |
|
|
261 |
/** |
|
262 |
* 增量授权,因用户没有授予相应接口调用的权限,需要用户确认是否授权 |
|
263 |
* \param permissions 需增量授权的信息列表 |
|
264 |
* \return 增量授权调用是否成功 |
|
265 |
*/ |
|
266 |
- (BOOL)incrAuthWithPermissions:(NSArray *)permissions; |
|
267 |
|
|
268 |
/** |
|
269 |
* 重新授权,因token废除或失效导致接口调用失败,需用户重新授权 |
|
270 |
* \param permissions 授权信息列表,同登录授权 |
|
271 |
* \return 授权调用是否成功 |
|
272 |
*/ |
|
273 |
- (BOOL)reauthorizeWithPermissions:(NSArray *)permissions; |
|
274 |
|
|
275 |
/** |
|
276 |
* 获取UnindID,可以根据UnindID的比较来确定OpenID是否属于同一个用户 |
|
277 |
* \return NO未登录,信息不足;YES条件满足,发送请求成功,请等待回调 |
|
278 |
*/ |
|
279 |
- (BOOL)RequestUnionId; |
|
280 |
|
|
281 |
/** |
|
282 |
* (静态方法)处理应用拉起协议 |
|
283 |
* \param url 处理被其他应用呼起时的逻辑 |
|
284 |
* \return 处理结果,YES表示成功,NO表示失败 |
|
285 |
*/ |
|
286 |
+ (BOOL)HandleOpenURL:(NSURL *)url; |
|
287 |
|
|
288 |
/** |
|
289 |
* (静态方法)sdk是否可以处理应用拉起协议 |
|
290 |
* \param url 处理被其他应用呼起时的逻辑 |
|
291 |
* \return 处理结果,YES表示可以 NO表示不行 |
|
292 |
*/ |
|
293 |
+ (BOOL)CanHandleOpenURL:(NSURL *)url; |
|
294 |
|
|
295 |
/** |
|
296 |
* (静态方法)处理应用的UniversalLink拉起协议 |
|
297 |
* \param url 处理被其他应用呼起时的逻辑 |
|
298 |
* \return 处理结果,YES表示成功,NO表示失败 |
|
299 |
*/ |
|
300 |
+ (BOOL)HandleUniversalLink:(NSURL *)url; |
|
301 |
|
|
302 |
/** |
|
303 |
* (静态方法)sdk是否可以处理应用的Universallink拉起协议 |
|
304 |
* \param url 处理被其他应用呼起时的逻辑(应用的Universallink链接须满足官网注册时的格式要求) |
|
305 |
* \return 处理结果,YES表示可以 NO表示不行 |
|
306 |
* 注:在调用其他Universallink相关处理接口之前,均需进行此项判断 |
|
307 |
*/ |
|
308 |
+ (BOOL)CanHandleUniversalLink:(NSURL *)url; |
|
309 |
|
|
310 |
/** |
|
311 |
* (静态方法)获取TencentOAuth调用的上一次错误信息 |
|
312 |
*/ |
|
313 |
+ (NSString *)getLastErrorMsg; |
|
314 |
|
|
315 |
/** |
|
316 |
* 以Server Side Code模式授权登录时,通过此接口获取返回的code值; |
|
317 |
* 以Client Side Token模式授权登录时,忽略此接口。 |
|
318 |
*/ |
|
319 |
- (NSString *)getServerSideCode; |
|
320 |
|
|
321 |
/** |
|
322 |
* 退出登录(退出登录后,TecentOAuth失效,需要重新初始化) |
|
323 |
* \param delegate 第三方应用用于接收请求返回结果的委托对象 |
|
324 |
*/ |
|
325 |
- (void)logout:(id<TencentSessionDelegate>)delegate; |
|
326 |
|
|
327 |
/** |
|
328 |
* 判断登录态是否有效 |
|
329 |
* \return 处理结果,YES表示有效,NO表示无效,请用户重新登录授权 |
|
330 |
*/ |
|
331 |
- (BOOL)isSessionValid; |
|
332 |
|
|
333 |
/** |
|
334 |
* 获取用户个人信息 |
|
335 |
* \return 处理结果,YES表示API调用成功,NO表示API调用失败,登录态失败,重新登录 |
|
336 |
*/ |
|
337 |
- (BOOL)getUserInfo; |
|
338 |
|
|
339 |
/** |
|
340 |
* 退出指定API调用 |
|
341 |
* \param userData 用户调用某条API的时候传入的保留参数 |
|
342 |
* \return 处理结果,YES表示成功 NO表示失败 |
|
343 |
*/ |
|
344 |
- (BOOL)cancel:(id)userData; |
|
345 |
|
|
346 |
/** |
|
347 |
* CGI类任务创建接口 |
|
348 |
* \param apiURL CGI请求的URL地址 |
|
349 |
* \param method CGI请求方式:"GET","POST" |
|
350 |
* \param params CGI请求参数字典 |
|
351 |
* \param callback CGI请求结果的回调接口对象 |
|
352 |
* \return CGI请求任务实例,用于取消任务,返回nil代表任务创建失败 |
|
353 |
*/ |
|
354 |
- (TCAPIRequest *)cgiRequestWithURL:(NSURL *)apiURL method:(NSString *)method params:(NSDictionary *)params callback:(id<TCAPIRequestDelegate>)callback; |
|
355 |
|
|
356 |
/** |
|
357 |
* TencentOpenApi发送任务统一接口 |
|
358 |
* \param request 请求发送的任务 |
|
359 |
* \param callback 任务发送后的回调地址 |
|
360 |
*/ |
|
361 |
- (BOOL)sendAPIRequest:(TCAPIRequest *)request callback:(id<TCAPIRequestDelegate>)callback; |
|
362 |
|
|
363 |
- (NSString *)getUserOpenID; |
|
364 |
|
22eb75
|
365 |
/* 获取appSignToken */ |
L |
366 |
+ (NSString *)getAppSignToken; |
|
367 |
|
|
368 |
/* 设置appSignToken,跨进程的应用可以通过该方法手动设置appSignToken */ |
|
369 |
+ (void)setupAppSignToken:(NSString *)appSignToken; |
|
370 |
|
eec5d6
|
371 |
@end |
L |
372 |
|
|
373 |
#pragma mark - TencentLoginDelegate(授权登录回调协议) |
|
374 |
|
|
375 |
/** |
|
376 |
* \brief TencentLoginDelegate iOS Open SDK 1.3 API回调协议 |
|
377 |
* |
|
378 |
* 第三方应用实现登录的回调协议 |
|
379 |
*/ |
|
380 |
@protocol TencentLoginDelegate <NSObject> |
|
381 |
|
|
382 |
@required |
|
383 |
|
|
384 |
/** |
|
385 |
* 登录成功后的回调 |
|
386 |
*/ |
|
387 |
- (void)tencentDidLogin; |
|
388 |
|
|
389 |
/** |
|
390 |
* 登录失败后的回调 |
|
391 |
* \param cancelled 代表用户是否主动退出登录 |
|
392 |
*/ |
|
393 |
- (void)tencentDidNotLogin:(BOOL)cancelled; |
|
394 |
|
|
395 |
/** |
|
396 |
* 登录时网络有问题的回调 |
|
397 |
*/ |
|
398 |
- (void)tencentDidNotNetWork; |
|
399 |
|
|
400 |
@optional |
|
401 |
/** |
|
402 |
* 登录时权限信息的获得 |
|
403 |
*/ |
8822d6
|
404 |
- (NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams __attribute__((deprecated("该接口已过期, 建议删除调用"))); |
eec5d6
|
405 |
|
L |
406 |
/** |
|
407 |
* unionID获得 |
|
408 |
*/ |
|
409 |
- (void)didGetUnionID; |
|
410 |
|
|
411 |
/** |
|
412 |
* 强制网页登录,包括账号密码登录和二维码登录 |
|
413 |
* return YES时,就算本地有手Q也会打开web界面 |
|
414 |
*/ |
|
415 |
- (BOOL)forceWebLogin; |
22eb75
|
416 |
|
L |
417 |
/* 获得appSignToken回调 */ |
|
418 |
- (void)tencentDidGetAppSignToken:(NSString *)appSignToken; |
|
419 |
|
eec5d6
|
420 |
@end |
L |
421 |
|
|
422 |
#pragma mark - TencentSessionDelegate(开放接口回调协议) |
|
423 |
|
|
424 |
/** |
|
425 |
* \brief TencentSessionDelegate iOS Open SDK 1.3 API回调协议 |
|
426 |
* |
|
427 |
* 第三方应用需要实现每条需要调用的API的回调协议 |
|
428 |
*/ |
|
429 |
@protocol TencentSessionDelegate<NSObject, TencentLoginDelegate, |
|
430 |
TencentWebViewDelegate> |
|
431 |
|
|
432 |
@optional |
|
433 |
|
|
434 |
/** |
|
435 |
* 退出登录的回调 |
|
436 |
*/ |
|
437 |
- (void)tencentDidLogout; |
|
438 |
|
|
439 |
/** |
|
440 |
* 因用户未授予相应权限而需要执行增量授权。在用户调用某个api接口时,如果服务器返回操作未被授权,则触发该回调协议接口,由第三方决定是否跳转到增量授权页面,让用户重新授权。 |
|
441 |
* \param tencentOAuth 登录授权对象。 |
|
442 |
* \param permissions 需增量授权的权限列表。 |
|
443 |
* \return 是否仍然回调返回原始的api请求结果。 |
|
444 |
* \note 不实现该协议接口则默认为不开启增量授权流程。若需要增量授权请调用\ref TencentOAuth#incrAuthWithPermissions: \n注意:增量授权时用户可能会修改登录的帐号 |
|
445 |
*/ |
|
446 |
- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions; |
|
447 |
|
|
448 |
/** |
|
449 |
* [该逻辑未实现]因token失效而需要执行重新登录授权。在用户调用某个api接口时,如果服务器返回token失效,则触发该回调协议接口,由第三方决定是否跳转到登录授权页面,让用户重新授权。 |
|
450 |
* \param tencentOAuth 登录授权对象。 |
|
451 |
* \return 是否仍然回调返回原始的api请求结果。 |
|
452 |
* \note 不实现该协议接口则默认为不开启重新登录授权流程。若需要重新登录授权请调用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登录授权时用户可能会修改登录的帐号 |
|
453 |
*/ |
|
454 |
- (BOOL)tencentNeedPerformReAuth:(TencentOAuth *)tencentOAuth; |
|
455 |
|
|
456 |
/** |
|
457 |
* 用户通过增量授权流程重新授权登录,token及有效期限等信息已被更新。 |
|
458 |
* \param tencentOAuth token及有效期限等信息更新后的授权实例对象 |
|
459 |
* \note 第三方应用需更新已保存的token及有效期限等信息。 |
|
460 |
*/ |
|
461 |
- (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth; |
|
462 |
|
|
463 |
/** |
|
464 |
* 用户增量授权过程中因取消或网络问题导致授权失败 |
|
465 |
* \param reason 授权失败原因,具体失败原因参见sdkdef.h文件中\ref UpdateFailType |
|
466 |
*/ |
|
467 |
- (void)tencentFailedUpdate:(UpdateFailType)reason; |
|
468 |
|
|
469 |
/** |
|
470 |
* 获取用户个人信息回调 |
|
471 |
* \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse |
|
472 |
* \remarks 正确返回示例: \snippet example/getUserInfoResponse.exp success |
|
473 |
* 错误返回示例: \snippet example/getUserInfoResponse.exp fail |
|
474 |
*/ |
|
475 |
- (void)getUserInfoResponse:(APIResponse*) response; |
|
476 |
|
|
477 |
/** |
|
478 |
* 社交API统一回调接口 |
|
479 |
* \param response API返回结果,具体定义参见sdkdef.h文件中\ref APIResponse |
|
480 |
* \param message 响应的消息,目前支持‘SendStory’,‘AppInvitation’,‘AppChallenge’,‘AppGiftRequest’ |
|
481 |
*/ |
|
482 |
- (void)responseDidReceived:(APIResponse*)response forMessage:(NSString *)message; |
|
483 |
|
|
484 |
/** |
|
485 |
* post请求的上传进度 |
|
486 |
* \param tencentOAuth 返回回调的tencentOAuth对象 |
|
487 |
* \param bytesWritten 本次回调上传的数据字节数 |
|
488 |
* \param totalBytesWritten 总共已经上传的字节数 |
|
489 |
* \param totalBytesExpectedToWrite 总共需要上传的字节数 |
|
490 |
* \param userData 用户自定义数据 |
|
491 |
*/ |
|
492 |
- (void)tencentOAuth:(TencentOAuth *)tencentOAuth didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite userData:(id)userData; |
|
493 |
|
|
494 |
|
|
495 |
/** |
|
496 |
* 通知第三方界面需要被关闭 |
|
497 |
* \param tencentOAuth 返回回调的tencentOAuth对象 |
|
498 |
* \param viewController 需要关闭的viewController |
|
499 |
*/ |
|
500 |
- (void)tencentOAuth:(TencentOAuth *)tencentOAuth doCloseViewController:(UIViewController *)viewController; |
|
501 |
|
|
502 |
@end |
|
503 |
|
|
504 |
#pragma mark - TencentWebViewDelegate(H5登录webview旋转方向回调) |
|
505 |
|
|
506 |
/** |
|
507 |
* \brief TencentWebViewDelegate: H5登录webview旋转方向回调协议 |
|
508 |
* |
|
509 |
* 第三方应用可以根据自己APP的旋转方向限制,通过此协议设置 |
|
510 |
*/ |
|
511 |
@protocol TencentWebViewDelegate <NSObject> |
|
512 |
@optional |
|
513 |
- (BOOL) tencentWebViewShouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation; |
|
514 |
- (NSUInteger) tencentWebViewSupportedInterfaceOrientationsWithWebkit; |
|
515 |
- (BOOL) tencentWebViewShouldAutorotateWithWebkit; |
|
516 |
@end |