一. 首先需要下载腾讯qq登录所需的库,下载地址是http://open.qq.com/。需要用到的有TencentOpenAPI.framework 和TencentOpenApi_IOS_Bundle.bundle,将两者加入工程。

二.下面就来实现QQ第三方登录1.声明属性,且viewcontroller实现TencentSessionDelegate@interface LoginViewController :UIViewController@property (nonatomic,strong)TencentOAuth *tencentOAuth;

@property (nonatomic,strong)NSMutableArray* permission;

//点击qq登录

- (IBAction)touchQQLoginButton:(id)sender;

@end

2.iOS中,如果iphone没有安装QQ客户端,当用qq进行第三方登录时会提示要安装qq,这样会影响app上架,

所以,应该先检测一下手机上时候安装了qq,没有安装就需要隐藏qq的第三方登录按钮。

//判断是否安装了qq

self.tencentOAuth =  [[TencentOAuth alloc]initWithAppId:QQid andDelegate:self];

BOOL isInstallQQ = [TencentOAuth iphoneQQInstalled];

if (isInstallQQ ==NO) {

[self.QQButton setHidden:YES];

}

其中initWithAppId:QQid中的QQid,是申请的腾讯开放平台的appid。

3.使用qq第三方登录,大概需要三部:

1)获取认证

2)获取用户信息

3)登录

下面我们来单步分析

1)获取认证。比如点击了 使用qq登录按钮

#pragma mark ----------- 点击qq登录 ----------------

- (IBAction)touchQQLoginButton:(id)sender {

self.tencentOAuth =  [[TencentOAuth alloc]initWithAppId:QQid andDelegate:self];

self.permission = [NSMutableArrayarrayWithObjects:@"get_user_info",@"get_simple_userinfo",nil];

[self.tencentOAuth authorize:self.permission inSafari:NO];

}

登录结束会调用delegate

#pragma mark --------- qq登录状态回调 ------

//登录完成后,会调用TencentSessionDelegate中关于登录的协议方法。

- (void)tencentDidLogin

{

NSLog(@"qq登录完成");

if (_tencentOAuth.accessToken &&0 != [_tencentOAuth.accessToken length])

{

//  记录登录用户的OpenID、Token以及过期时间

_labelAccessToken.text = _tencentOAuth.accessToken;

NSLog(@"token===%@",[_tencentOAuth accessToken] );

NSLog(@"openId===%@",[_tencentOAuth openId]) ;//这个是用户的唯一id,使用它来登录自己的服务器,因为它不像微信登录那样和userInfo一起打印出来,所以需要把它变成一个全局变量才能传给后台

NSLog(@"appid === %@",[_tencentOAuth appId]);

[self getQQUserInfo];//自己实现的方法,得到用户信息,见下一步说明。

}

else{

_labelAccessToken.text = @"登录不成功没有获取accesstoken";

}

}

//非网络错误导致登录失败:

-(void)tencentDidNotLogin:(BOOL)cancelled

{

NSLog(@"非网络错误导致登录失败");

if (cancelled)

{

NSLog(@"用户取消登录操作");

}

else

{

}

}

//网络错误导致登录失败:

-(void)tencentDidNotNetWork

{

NSLog(@"网络错误导致登录失败:");

}

2)获取用户信息

#pragma mark ---------- 获取qq用户信息 ----

- (void)getQQUserInfo {

if(![_tencentOAuth getUserInfo]){

NSLog(@"获取qq用户信息失败");

}

}

获取用户信息结束回调

#pragma mark -------- qq用户信息回调 -------

/**

* Called when the get_user_info has response.

*/

- (void)getUserInfoResponse:(APIResponse*) response {

if (response.retCode ==URLREQUEST_SUCCEED)

{

NSMutableString *str=[NSMutableString stringWithFormat:@""];

for (id keyin response.jsonResponse) {

[strappendString: [NSString stringWithFormat:@"%@:%@\n",key,[response.jsonResponseobjectForKey:key]]];

}

MyNSLog(@"%@",str);

NSString* url = [[NSString alloc]initWithString:[response.jsonResponseobjectForKey:@"figureurl_qq_2"]];

NSString* nickname = [[NSString alloc]initWithString:[response.jsonResponseobjectForKey:@"nickname"]];

if (NO_VALUE(url) ||NO_VALUE(nickname)) {

MyNSLog(@"获取qq用户信息失败");

}else{

NSNumber* typeQQ = [NSNumber numberWithInteger:1];

[selflogin:self.openIDandNickname:nickname andAvatar:url  andType:typeQQ];//自己的登录函数

}

}

else

{

[self showHint:response.errorMsg];

}

}

3) 登录自己的服务器

[self login:self.openID andNickname:nickname andAvatar:url andType:typeQQ];//自己的登录函数

三.当从qq认证返回我们自己的app,需要在appdelegate中实现

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

if ([url.host isEqualToString:@"qzapp"]) {

return  [TencentOAuth HandleOpenURL:url];

}

return YES;

}

-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url{

if ([url.host isEqualToString:@"qzapp"]) {

return  [TencentOAuth HandleOpenURL:url];

}

}

注意事项:

1. 需要特别注意使用第三方登录对审核带来的影响,如果审核人员的设备未安装QQ,如果是跳转到下载微信和QQ的页面,可能会被拒绝。

2. app发布前,只有添加进测试帐号的帐号才能登录成功,否则会报错。

3. 开发完成后需要提交审核,否则只能允许100个测试账号进行登录。

我是个小白,文章如有错误,请指出,谢谢。

android qq 登陆 简书,第三方登录 — QQ登录相关推荐

  1. android qq 登陆 简书,使用QQ第三方登录

    一,首先导入jar包 image.png 配置: ··· compile files('libs/open_sdk_r5990_lite.jar') compile 'com.android.supp ...

  2. Android实现沉浸式状态栏(透明状态栏)(QQ和简书样式)

    本文内容大多参考网络上的Android实现沉浸式状态栏教程,由于看了太多类似文章,固在此不再一一列举出处.本文仅为我自己梳理思路和供各位看到本文的朋友参考(百度:Android沉浸式状态栏,第一页内容 ...

  3. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  4. Android点击按钮显示密码,Android 开发仿简书登录框可删除内容或显示密码框的内容...

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  5. WPF系列教程——(一)仿TIM QQ界面 - 简书

    WPF系列教程--(一)仿TIM QQ界面 - 简书 原文: WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM ...

  6. Android 用官方SDK实现第三方(qq、微信、微博)登录

    转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/44680291 可下载体验本人在项目中的实战运用:http://zhushou.36 ...

  7. html手机qq登陆验证,无手机验证怎么登录QQ

    电脑登陆qq时需要QQ手机版确认怎么办?不少QQ用户都与遇到换了一台新的电脑登陆QQ都会出现QQ登不了的情况,系统提示:当前设备需进行身份验证,请打开qq手机版确认.而打开手机QQ等不知道在哪里验证. ...

  8. 【如何删除QQ登陆时同时出现的QQ宠物】

    有些朋友喜欢过一段时间的QQ宠物,一开机登陆QQ,他就会自动跳出来,但是时间一久就感觉没有太多兴趣了,所以,就想删除或者禁止掉,方法其实很简单,现在就教你两招阻止与删除QQ宠物.具体方法如下,希望对您 ...

  9. 高仿简书Android,高仿简书个人中心页面

    高仿简书个人中心页面 Demo下载地址: 先贴上效果图 1. 步骤 1.1 把APP的主题改为NoAction 1.2 引入Material Design 包 implementation 'com. ...

  10. qq文件传输服务器ip,TP-Link通过获取QQ登陆服务器IP及封锁QQ登陆

    这个方法比较适合企业的一些网管,主要就是通过获得QQ登陆的IP然后对其IP进行屏蔽实现QQ无法登陆 这里我以TP-Link 541G+ 这款路由器为例子,其他的路由器也可以借鉴下面的方法 1.获得QQ ...

最新文章

  1. 2021惠阳一中高考成绩查询,惠阳一中实验学校2019高考成绩喜报、本科重本高优上线人数...
  2. iOS开发之多媒体播放
  3. 读QT5.7源码(三)Q_OBJECT 和QMetaObject
  4. ArcGis中空间连接join
  5. mysql在计算机管理中的路径怎么修改_Rstudio中修改工作路径的三种方法
  6. cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试
  7. 太突然!多所高校永久关闭
  8. Flink 1.9报错:No implicits found for parameter evidence$2: TypeInformation[(String, String, String)]
  9. 卸载anaconda
  10. Google AdSense 申请技巧,谷歌广告申请通不过教程
  11. 如何将 MySQL 去重操作优化到极致?| CSDN 博文精选
  12. 《统计学习方法》——提升算法
  13. 使用WebService的方式调用部署在服务器的Wcf服务
  14. 『拼多多』产品体验报告
  15. halcon测试篇:求两条线之间的交点
  16. mysql多数据源配置
  17. 浅谈企业数据安全风险
  18. Icons - Material Design各种ICON图标大全
  19. ios Symbol(s) not found for architecture arm64
  20. 2019瓜子网后台开发笔试题目

热门文章

  1. 【AD20学习笔记】PCB封装库的创建
  2. 《大数据技术原理与应用》(第三章 HDFS 课后答案)
  3. 软件产品测试报告模板
  4. 《Redis开发与运维》读书笔记三
  5. 沙盘模拟软件_三连冠!我校学子连续三年蝉联全国大学生沙盘模拟经营大赛福建省决赛一等奖...
  6. SVN分支合并冲突解决
  7. 在Excel中快速制作分区桌面壁纸
  8. 25行代码实现定时自动发送微信消息!
  9. Java进阶之路——从初级程序员到架构师,从小工到专家
  10. 如何提升软件开发效能?企业级业务架构思考与实践