| /// | 
| /// \file sdkdef.h | 
| /// \brief SDK中相关常量定义 | 
| /// | 
| /// Created by Tencent on 12-12-25. | 
| /// Copyright (c) 2012年 Tencent. All rights reserved. | 
| /// | 
|   | 
| #import <Foundation/Foundation.h> | 
| #import <UIKit/UIKit.h> | 
|   | 
| /** | 
|  * \brief 设置sdk的log等级 | 
|  */ | 
| typedef enum { | 
|     TCOLogLevel_Disabled = -1,   // 关闭所有log | 
|     TCOLogLevel_Error = 0, | 
|     TCOLogLevel_Warning, | 
|     TCOLogLevel_Info, | 
|     TCOLogLevel_Debug, | 
| } TCOLogLevel; | 
|   | 
| /** | 
|  * \brief 手机qq的当前版本 | 
|  */ | 
| typedef enum QQVersion | 
| { | 
|     kQQUninstall, | 
|     kQQVersion3_0, | 
|     kQQVersion4_0,      //支持sso登陆 | 
|     kQQVersion4_2_1,    //ios7兼容 | 
|     kQQVersion4_5,      //4.5版本,wpa会话 | 
|     kQQVersion4_6,      //4.6版本,sso登陆信令通道切换 | 
|     kQQVersion4_7,      //4.7版本 不确定新支持了什么样的属性 | 
| } QQVersion; | 
|   | 
| /** | 
|  * \brief APIResponse.retCode可能的枚举常量 | 
|  */ | 
| typedef enum | 
| { | 
|     URLREQUEST_SUCCEED = 0, /**< 网络请求成功发送至服务器,并且服务器返回数据格式正确 | 
|                              * \note 这里包括所请求业务操作失败的情况,例如没有授权等原因导致 | 
|                              */ | 
|      | 
|     URLREQUEST_FAILED = 1,  /**< 网络异常,或服务器返回的数据格式不正确导致无法解析 */ | 
| } REPONSE_RESULT; | 
|   | 
| /** | 
|  * \brief 增量授权失败原因 | 
|  * | 
|  * \note 增量授权失败不影响原token的有效性(原token已失效的情况除外) | 
|  */ | 
| typedef enum | 
| { | 
|     kUpdateFailUnknown = 1,  ///< 未知原因 | 
|     kUpdateFailUserCancel,   ///< 用户取消 | 
|     kUpdateFailNetwork,      ///< 网络问题 | 
| } UpdateFailType; | 
|   | 
| /** | 
|  * \brief 封装服务器返回的结果 | 
|  * | 
|  * APIResponse用于封装所有请求的返回结果,包括错误码、错误信息、原始返回数据以及返回数据的json格式字典 | 
|  */ | 
| @interface APIResponse : NSObject<NSCoding> { | 
|     int      _detailRetCode; | 
|     int         _retCode; | 
|     int         _seq; | 
|     NSString *_errorMsg; | 
|     NSDictionary *_jsonResponse; | 
|     NSString *_message; | 
|     id       _userData; | 
| } | 
|   | 
| /** | 
|  * 新增的详细错误码\n | 
|  * detailRetCode主要用于区分不同的错误情况,参见\ref OpenSDKError | 
|  */ | 
| @property (nonatomic, assign) int detailRetCode; | 
|   | 
| /** | 
|  * 网络请求是否成功送达服务器,以及服务器返回的数据格式是否正确\n | 
|  * retCode具体取值可参考\ref REPONSE_RESULT | 
|  */ | 
| @property (nonatomic, assign) int retCode; | 
|   | 
| /** | 
|  * 网络请求对应的递增序列号,方便内部管理 | 
|  */ | 
| @property (nonatomic, assign) int seq; | 
|   | 
| /** | 
|  * 错误提示语 | 
|  */ | 
| @property (nonatomic, retain) NSString *errorMsg; | 
|   | 
| /** | 
|  * 服务器返回数据的json格式字典\n | 
|  * 字典内具体参数的命名和含义请参考\ref api_spec | 
|  */ | 
| @property (nonatomic, retain) NSDictionary *jsonResponse; | 
|   | 
| /** | 
|  * 服务器返回的原始数据字符串 | 
|  */ | 
| @property (nonatomic, retain) NSString *message; | 
|   | 
| /** | 
|  * 用户保留数据 | 
|  */ | 
| @property (nonatomic, retain) id userData; | 
|   | 
| @end | 
|   | 
|   | 
| /** | 
|  * 用户自定义的保留字段 | 
|  */ | 
| FOUNDATION_EXTERN NSString * const PARAM_USER_DATA; | 
|   | 
| /** | 
|  * \name 应用邀请参数字段定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 应用邀请展示图片url的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_APP_ICON; | 
|   | 
| /** 应用邀请描述文本的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_APP_DESC; | 
|   | 
| /** 应用邀请好友列表的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_APP_INVITED_OPENIDS; | 
|   | 
| ///@} | 
|   | 
| /** | 
|  * \name sendStory新分享参数字段定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 预填入接受人列表的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_RECEIVER; | 
|   | 
| /** 分享feeds标题的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_TITLE; | 
|   | 
| /** 分享feeds评论内容的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_COMMENT; | 
|   | 
| /** 分享feeds摘要的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_SUMMARY; | 
|   | 
| /** 分享feeds展示图片url的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_IMAGE; | 
|   | 
| /** 分享feeds跳转链接url的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_URL; | 
|   | 
| /** 分享feeds点击操作默认行为的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SENDSTORY_ACT; | 
|   | 
| ///@} | 
|   | 
| /** | 
|  * \name 设置头像参数字段定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 头像图片数据的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SETUSERHEAD_PIC; | 
|   | 
| /** 头像图片文件名的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_SETUSERHEAD_FILENAME; | 
|   | 
| ///@} | 
|   | 
| /** | 
|  * \name 服务器返回数据的参数字段定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 服务器返回码的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_RETCODE; | 
|   | 
| /** 服务器返回错误信息的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_MESSAGE; | 
|   | 
| /** 服务器返回额外数据的key */ | 
| FOUNDATION_EXTERN NSString * const PARAM_DATA; | 
|   | 
| ///@} | 
|   | 
| /** | 
|  * \name 错误信息相关常量定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 详细错误信息字典中额外信息的key */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyExtraInfo; | 
|   | 
| /** 详细错误信息字典中返回码的key */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyRetCode; | 
|   | 
| /** 详细错误信息字典中错误语句的key */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorKeyMsg; | 
|   | 
| /** 不支持的接口 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUnsupportedAPI; | 
|   | 
| /** 操作成功 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgSuccess; | 
|   | 
| /** 未知错误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUnknown; | 
|   | 
| /** 用户取消 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserCancel; | 
|   | 
| /** 请重新登录 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgReLogin; | 
|   | 
| /** 应用没有操作权限 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgOperationDeny; | 
|   | 
| /** 网络异常或没有网络 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgNetwork; | 
|   | 
| /** URL格式或协议错误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgURL; | 
|   | 
| /** 解析数据出错 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgDataParse; | 
|   | 
| /** 传入参数有误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgParam; | 
|   | 
| /** 连接超时 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgTimeout; | 
|   | 
| /** 安全问题 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgSecurity; | 
|   | 
| /** 文件读写错误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgIO; | 
|   | 
| /** 服务器端错误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgServer; | 
|   | 
| /** 页面错误 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgWebPage; | 
|   | 
| /** 设置头像图片过大 */ | 
| FOUNDATION_EXTERN NSString * const TCOpenSDKErrorMsgUserHeadPicLarge; | 
|   | 
| ///@} | 
|   | 
| /** | 
|  * \brief SDK新增详细错误常量 | 
|  */ | 
| typedef enum | 
| { | 
|     kOpenSDKInvalid = -1,                       ///< 无效的错误码 | 
|     kOpenSDKErrorUnsupportedAPI = -2,                ///< 不支持的接口 | 
|      | 
|     /** | 
|      * \name CommonErrorCode | 
|      * 公共错误码 | 
|      */ | 
|     ///@{ | 
|     kOpenSDKErrorSuccess = 0,                   ///< 成功 | 
|     kOpenSDKErrorUnknown,                       ///< 未知错误 | 
|     kOpenSDKErrorUserCancel,                    ///< 用户取消 | 
|     kOpenSDKErrorReLogin,                       ///< token无效或用户未授权相应权限需要重新登录 | 
|     kOpenSDKErrorOperationDeny,                 ///< 第三方应用没有该api操作的权限 | 
|     ///@} | 
|      | 
|     /** | 
|      * \name NetworkRelatedErrorCode | 
|      * 网络相关错误码 | 
|      */ | 
|     ///@{ | 
|     kOpenSDKErrorNetwork,                       ///< 网络错误,网络不通或连接不到服务器 | 
|     kOpenSDKErrorURL,                           ///< URL格式或协议错误 | 
|     kOpenSDKErrorDataParse,                     ///< 数据解析错误,服务器返回的数据解析出错 | 
|     kOpenSDKErrorParam,                         ///< 传入参数错误 | 
|     kOpenSDKErrorConnTimeout,                   ///< http连接超时 | 
|     kOpenSDKErrorSecurity,                      ///< 安全问题 | 
|     kOpenSDKErrorIO,                            ///< 下载和文件IO错误 | 
|     kOpenSDKErrorServer,                        ///< 服务器端错误 | 
|     ///@} | 
|      | 
|     /** | 
|      * \name WebViewRelatedError | 
|      * webview特有错误 | 
|      */ | 
|     ///@{ | 
|     kOpenSDKErrorWebPage,                       ///< 页面错误 | 
|     ///@} | 
|      | 
|     /** | 
|      * \name SetUserHeadRelatedErrorCode | 
|      * 设置头像自定义错误码段 | 
|      */ | 
|     ///@{ | 
|     kOpenSDKErrorUserHeadPicLarge = 0x010000,   ///< 图片过大 设置头像自定义错误码 | 
|     ///@} | 
| } OpenSDKError; | 
|   | 
| /** | 
|  * \name SDK版本(v1.3)支持的授权列表常量 | 
|  */ | 
| ///@{ | 
|   | 
| /** 发表一条说说到QQ空间(<b>需要申请权限</b>) */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_TOPIC; | 
|   | 
| /** 发表一篇日志到QQ空间(<b>需要申请权限</b>) */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_ONE_BLOG; | 
|   | 
| /** 创建一个QQ空间相册(<b>需要申请权限</b>) */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_ALBUM; | 
|   | 
| /** 上传一张照片到QQ空间相册(<b>需要申请权限</b>) */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_UPLOAD_PIC; | 
|   | 
| /** 获取用户QQ空间相册列表(<b>需要申请权限</b>) */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_LIST_ALBUM; | 
|   | 
| /** 同步分享到QQ空间、腾讯微博 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_ADD_SHARE; | 
|   | 
| /** 验证是否认证空间粉丝 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_CHECK_PAGE_FANS; | 
|   | 
| /** 获取登录用户自己的详细信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_INFO; | 
|   | 
| /** 获取其他用户的详细信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_OTHER_INFO; | 
|   | 
| /** 获取会员用户基本信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_VIP_INFO; | 
|   | 
| /** 获取会员用户详细信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_VIP_RICH_INFO; | 
|   | 
| /** 获取用户信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_USER_INFO; | 
|   | 
| /** 移动端获取用户信息 */ | 
| FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_SIMPLE_USER_INFO; | 
| ///@} | 
|   | 
|   | 
| /** | 
|  * \name CGI接口相关参数类型定义 | 
|  */ | 
| ///@{ | 
|   | 
| /** 必填的字符串类型参数 */ | 
| typedef NSString *TCRequiredStr; | 
|   | 
| /** 必填的UIImage类型参数 */ | 
| typedef UIImage *TCRequiredImage; | 
|   | 
| /** 必填的整型参数 */ | 
| typedef NSInteger TCRequiredInt; | 
|   | 
| /** 必填的数字类型 */ | 
| typedef NSNumber *TCRequiredNumber; | 
|   | 
| /** 必填的NSData参数 */ | 
| typedef NSData *TCRequiredData; | 
|   | 
| /** 可选的字符串类型参数 */ | 
| typedef NSString *TCOptionalStr; | 
|   | 
| /** 可选的UIImage类型参数 */ | 
| typedef UIImage *TCOptionalImage; | 
|   | 
| /** 可选的整型参数 */ | 
| typedef NSInteger TCOptionalInt; | 
|   | 
| /** 可选的数字类型 */ | 
| typedef NSNumber *TCOptionalNumber; | 
|   | 
| /** 可选的不定类型参数 */ | 
| typedef id TCRequiredId; | 
| ///@} | 
|   | 
|   | 
| /** | 
|  * \brief CGI请求的参数字典封装辅助基类 | 
|  * | 
|  * 将相应属性的值以key-value的形式保存到参数字典中 | 
|  */ | 
| @interface TCAPIRequest : NSMutableDictionary | 
|   | 
| /** CGI请求的URL地址 */ | 
| @property (nonatomic, readonly) NSURL *apiURL; | 
|   | 
| /** CGI请求方式:"GET","POST" */ | 
| @property (nonatomic, readonly) NSString *method; | 
|   | 
| /** | 
|  * API参数中的保留字段,可以塞入任意字典支持的类型,再调用完成后会带回给调用方 | 
|  */ | 
| @property (nonatomic, retain) TCRequiredId paramUserData; | 
|   | 
| /** | 
|  * APIResponse,API的返回结果 | 
|  */ | 
| @property (nonatomic, readonly) APIResponse *response; | 
|   | 
| /** 取消相应的CGI请求任务 */ | 
| - (void)cancel; | 
|   | 
| @end | 
|   | 
| @protocol TCAPIRequestDelegate <NSObject> | 
| @optional | 
| - (void)cgiRequest:(TCAPIRequest *)request didResponse:(APIResponse *)response; | 
|   | 
| @end |