android qq 登陆 简书,第三方登录 — QQ登录
一. 首先需要下载腾讯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登录相关推荐
- android qq 登陆 简书,使用QQ第三方登录
一,首先导入jar包 image.png 配置: ··· compile files('libs/open_sdk_r5990_lite.jar') compile 'com.android.supp ...
- Android实现沉浸式状态栏(透明状态栏)(QQ和简书样式)
本文内容大多参考网络上的Android实现沉浸式状态栏教程,由于看了太多类似文章,固在此不再一一列举出处.本文仅为我自己梳理思路和供各位看到本文的朋友参考(百度:Android沉浸式状态栏,第一页内容 ...
- android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容
简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...
- Android点击按钮显示密码,Android 开发仿简书登录框可删除内容或显示密码框的内容...
简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...
- WPF系列教程——(一)仿TIM QQ界面 - 简书
WPF系列教程--(一)仿TIM QQ界面 - 简书 原文: WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM ...
- Android 用官方SDK实现第三方(qq、微信、微博)登录
转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/44680291 可下载体验本人在项目中的实战运用:http://zhushou.36 ...
- html手机qq登陆验证,无手机验证怎么登录QQ
电脑登陆qq时需要QQ手机版确认怎么办?不少QQ用户都与遇到换了一台新的电脑登陆QQ都会出现QQ登不了的情况,系统提示:当前设备需进行身份验证,请打开qq手机版确认.而打开手机QQ等不知道在哪里验证. ...
- 【如何删除QQ登陆时同时出现的QQ宠物】
有些朋友喜欢过一段时间的QQ宠物,一开机登陆QQ,他就会自动跳出来,但是时间一久就感觉没有太多兴趣了,所以,就想删除或者禁止掉,方法其实很简单,现在就教你两招阻止与删除QQ宠物.具体方法如下,希望对您 ...
- 高仿简书Android,高仿简书个人中心页面
高仿简书个人中心页面 Demo下载地址: 先贴上效果图 1. 步骤 1.1 把APP的主题改为NoAction 1.2 引入Material Design 包 implementation 'com. ...
- qq文件传输服务器ip,TP-Link通过获取QQ登陆服务器IP及封锁QQ登陆
这个方法比较适合企业的一些网管,主要就是通过获得QQ登陆的IP然后对其IP进行屏蔽实现QQ无法登陆 这里我以TP-Link 541G+ 这款路由器为例子,其他的路由器也可以借鉴下面的方法 1.获得QQ ...
最新文章
- 2021惠阳一中高考成绩查询,惠阳一中实验学校2019高考成绩喜报、本科重本高优上线人数...
- iOS开发之多媒体播放
- 读QT5.7源码(三)Q_OBJECT 和QMetaObject
- ArcGis中空间连接join
- mysql在计算机管理中的路径怎么修改_Rstudio中修改工作路径的三种方法
- cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试
- 太突然!多所高校永久关闭
- Flink 1.9报错:No implicits found for parameter evidence$2: TypeInformation[(String, String, String)]
- 卸载anaconda
- Google AdSense 申请技巧,谷歌广告申请通不过教程
- 如何将 MySQL 去重操作优化到极致?| CSDN 博文精选
- 《统计学习方法》——提升算法
- 使用WebService的方式调用部署在服务器的Wcf服务
- 『拼多多』产品体验报告
- halcon测试篇:求两条线之间的交点
- mysql多数据源配置
- 浅谈企业数据安全风险
- Icons - Material Design各种ICON图标大全
- ios Symbol(s) not found for architecture arm64
- 2019瓜子网后台开发笔试题目