QQSDK(OAuth登录)Binding工程
来源:互联网 发布:淘宝店铺7阶层是什么 编辑:程序博客网 时间:2024/06/08 13:33
本章主要记录的是QQ登录OAuth部分的api问题,与前些时候的OC语法特性不同,这个SDK的接口没有如微信SDK那般梳理的简单明确,有些语言特性之前也没处理过,下面介绍就是这部分:
1.FOUNDATION_EXTERN(C与C++语法特性的一些处理)
<span style="font-family:SimSun;font-size:14px;">/** 取消收听腾讯微博上的用户 */FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_DEL_IDOL;/** 获取微博中最近at的好友 */FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO;/** 获取微博中匹配昵称的好友 */FOUNDATION_EXTERN NSString *const kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO;/** 获取会员用户基本信息 */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;</span>
_permissions = [[NSArray arrayWithObjects: kOPEN_PERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIMPLE_USER_INFO, kOPEN_PERMISSION_ADD_ALBUM, kOPEN_PERMISSION_ADD_IDOL, kOPEN_PERMISSION_ADD_ONE_BLOG, kOPEN_PERMISSION_ADD_PIC_T, kOPEN_PERMISSION_ADD_SHARE, kOPEN_PERMISSION_ADD_TOPIC, kOPEN_PERMISSION_CHECK_PAGE_FANS, kOPEN_PERMISSION_DEL_IDOL, kOPEN_PERMISSION_DEL_T, kOPEN_PERMISSION_GET_FANSLIST, kOPEN_PERMISSION_GET_IDOLLIST, kOPEN_PERMISSION_GET_INFO, kOPEN_PERMISSION_GET_OTHER_INFO, kOPEN_PERMISSION_GET_REPOST_LIST, kOPEN_PERMISSION_LIST_ALBUM, kOPEN_PERMISSION_UPLOAD_PIC, kOPEN_PERMISSION_GET_VIP_INFO, kOPEN_PERMISSION_GET_VIP_RICH_INFO, kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO, kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO, nil] retain];
出现在申请操作权限描述的时候出现,在demo中没有细找对应的常量的字符描述,直接在测试时断点调试堆栈时查找对应字符数据,如图:
根据这些提示,也就没必要同时写入到ApiDefinition文件中,进行接口定义了,因此可在引用时添加常量定义:
public class OPEN_PERMISSION{public const string ADD_TOPIC = "add_topic";public const string ADD_ONE_BLOG = "add_one_blog";public const string ADD_ALBUM = "add_album";public const string UPLOAD_PIC = "upload_pic";public const string LIST_ALBUM = "list_album";public const string ADD_SHARE = "add_share";public const string CHECK_PAGE_FANS = "check_page_fans";public const string ADD_PIC_T = "add_pic_t";public const string DEL_T = "del_t";public const string GET_REPOST_LIST = "get_repost_list";public const string GET_INFO = "get_info";public const string GET_OTHER_INFO = "get_other_info";public const string GET_FANSLIST = "get_fanslist";public const string GET_IDOLLIST = "get_idollist";public const string ADD_IDOL = "add_idol";public const string DEL_IDOL = "del_idol";public const string GET_INTIMATE_FRIENDS_WEIBO = "get_intimate_friends_weibo";public const string MATCH_NICK_TIPS_WEIBO = "match_nick_tips_weibo";public const string GET_VIP_INFO = "get_vip_info";public const string GET_VIP_RICH_INFO = "get_vip_rich_info";public const string GET_USER_INFO = "get_user_info";public const string GET_SIMPLE_USER_INFO = "get_simple_user_info";//public const NSString WEIYUN_UPLOAD_PIC = "get_user_info";//public const NSString WEIYUN_DOWNLOAD_PIC = "get_user_info";//public const NSString WEIYUN_GET_PIC_LIST = "get_user_info";//public const NSString WEIYUN_DELETE_PIC = "get_user_info";//public const NSString WEIYUN_GET_PIC_THUMB = "get_user_info";//public const NSString WEIYUN_UPLOAD_MUSIC = "get_user_info";//public const NSString WEIYUN_DOWNLOAD_MUSIC = "get_user_info";//public const NSString WEIYUN_GET_MUSIC_LIST = "get_user_info";//public const NSString WEIYUN_DELETE_MUSIC = "get_user_info";//public const NSString WEIYUN_UPLOAD_VIDEO = "get_user_info";//public const NSString WEIYUN_DOWNLOAD_VIDEO = "get_user_info";//public const NSString WEIYUN_GET_VIDEO_LIST = "get_user_info";//public const NSString WEIYUN_DELETE_VIDEO = "get_user_info";//public const NSString WEIYUN_UPLOAD_PHOTO = "get_user_info";//public const NSString WEIYUN_DOWNLOAD_PHOTO = "get_user_info";//public const NSString WEIYUN_GET_PHOTO_LIST = "get_user_info";//public const NSString WEIYUN_DELETE_PHOTO = "get_user_info";//public const NSString WEIYUN_GET_PHOTO_THUMB = "get_user_info";//public const NSString WEIYUN_CHECK_RECORD = "get_user_info";//public const NSString WEIYUN_CREATE_RECORD = "get_user_info";//public const NSString WEIYUN_DELETE_RECORD = "get_user_info";//public const NSString WEIYUN_GET_RECORD = "get_user_info";//public const NSString WEIYUN_MODIFY_RECORD = "get_user_info";//public const NSString WEIYUN_QUERY_ALL_RECORD = "get_user_info";}
2.NSArray数组处理
登录鉴权部分出现的:((NSArray*)permissions)
/** * 登录授权 * \param permissions 授权信息列表 * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b> */- (BOOL)authorize:(NSArray *)permissions inSafari:(BOOL)bInSafari;既然知道这个参数是个字符数组,我们就不必直译NSArray来添加Api,以免使用时出现数据类型转换的麻烦事,可直接使用string[]
[Export ("authorize:inSafari:")]bool Authorize(string[] permissions,bool bInSafari);3.委托协议TencentSessionDelegate
这是个本身引用其它协议的delegate,对比了官方文档说明,有两种参考方案
第一,通过WeakDelegate引用,但这种方案不靠谱,说明它不是简单的weak引用,会报错BI1006
[BaseType (typeof (NSObject), KeepUntilRef="Dismiss"), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (SomeDelegate) }) ] class Demo { [Export ("show")] void Show (string message); }第二,通过继承使用,可以理解为是使用父类的方法
/** * \brief TencentSessionDelegate iOS Open SDK 1.3 API回调协议 * * 第三方应用需要实现每条需要调用的API的回调协议 */@protocol TencentSessionDelegate<NSObject, TencentLoginDelegate, TencentApiInterfaceDelegate>对应api为
[Model][Protocol] [BaseType (typeof(NSObject))]interface TencentSessionDelegate:TencentLoginDelegate,TencentApiInterfaceDelegate
4.使用SessionDelegate
如果不注意这个参数,你的回调没办法执行,直接闪退,原因就出现在这个参数上,首先看api中
/** 已实现的开放接口的回调委托对象 */@property(nonatomic, assign) id<TencentSessionDelegate> sessionDelegate;
/** * 初始化TencentOAuth对象 * \param appId 第三方应用在互联开放平台申请的唯一标识 * \param delegate 第三方应用用于接收请求返回结果的委托对象 * \return 初始化后的授权登录对象 */- (id)initWithAppId:(NSString *)appId andDelegate:(id<TencentSessionDelegate>)delegate;原以为,initWithAppId这个方法已经对delegate赋值就可以了,但由于使用会对其两次实例化,SessionDelegate无法对应上,因此在使用的时候,同样对其赋值
_TencentOAuth = new TencentOAuth ();var deg = new SessionDelegate (this);_TencentOAuth.SessionDelegate = deg;_TencentOAuth = _TencentOAuth.InitWithAppId(appId,deg);这样回调才会正常。
这个SDK有着多种不同的数据类型,在对api对应binding的时候,需要理解部分数据类型的含义,所以代码上会出现不同的定义,那就看自己的需要了。
工程,QQSDK(并未完整测试,如有问题及时联系,多谢!)。
0 0
- QQSDK(OAuth登录)Binding工程
- QQ第三方登录实例demo(QQSDK包优化)
- QQ第三方登录实例demo(QQSDK包优化)
- 登录和oauth机制
- QQ登录PHP OAuth示例
- QQ登录PHP OAuth示例
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- oauth协议第三方登录()
- 第三方登录oauth原理
- Android常用OAuth登录:百度登录
- 团购实现oauth第三方登录
- PHP实现google开放登录 Google Oauth
- OAuth client 微信、qq、新浪登录
- 单点登录SSO,统一认证oAuth名词解释
- PHP第三方登录之OAuth协议
- Oauth javaweb第三方登录实现
- Android MimeType的用途以及所有类型
- win32窗口枚举
- php socket 基础
- C语言指针使用总结
- java date 日期加减天数
- QQSDK(OAuth登录)Binding工程
- 找出不支持arm64的静态库/动态库
- vs2010 编译 python 源码
- isset,empty,is_null的小知识点
- 《UNIX环境高级编程》读书笔记之信号(2)
- Eclipse环境下配置spket中ExtJS提示
- 爱,曾迷了我的眼睛
- python2.4情况下安装python2.7
- 在线把jpg转换成pdf方法