为什么我ios版本的qq用户登录不进去了

主题 : ios里的QQ怎么样才可以实现第三方网页版的登录
级别: 新手上路
可可豆: 154 CB
威望: 154 点
在线时间: 22(时)
发自: Web Page
来源于&&分类
ios里的QQ怎么样才可以实现第三方网页版的登录&&&
AppStore之前被拒,我们已经把代码写成手机未安装qq则不显示qq的第三方登录图标,但是审核还是没过,我就想问问qq怎么实现第三方的网页登录
级别: 新手上路
可可豆: 154 CB
威望: 154 点
在线时间: 22(时)
发自: Web Page
有大神知道怎么做吗
级别: 圣骑士
UID: 235727
可可豆: 1881 CB
威望: 1346 点
在线时间: 1033(时)
发自: Web Page
你把被拒的原因贴出来看看,或许不是这个原因呢!
级别: 新手上路
可可豆: 154 CB
威望: 154 点
在线时间: 22(时)
发自: Web Page
回 2楼(细雨蒙蒙飘) 的帖子
10.6 DetailsWe were required to install the QQ app before we can log-in via QQ. The user should be able to log-in and access their account, without requiring additional applications to be installed.Next StepsIf you choose to allow users to log-in via QQ, please use methods that can authenticate users from within your app, such as a native web-view.Please refer to the attached screenshot(s) for more information.Next StepsPlease revise your app so that a user can use it upon launch. If your app requires authentication before use, please use methods that can authenticate users from within your app.
级别: 圣骑士
UID: 235727
可可豆: 1881 CB
威望: 1346 点
在线时间: 1033(时)
发自: Web Page
回 3楼(Kakarrot) 的帖子
10.6苹果和我们的客户高度推崇简单、精致、富有创造性以及经过精心设计的界面。虽然需要付出更多,但却非常值得。苹果设立了很高的门槛。如果你的用户界面太过复杂或者水准不高,可能会被拒绝。你自己有木有登录页面啊,像这样的话,在审核的时候你就只能做一个接口,审核时隐藏,通过了就把接口设置开启状态,不能就上不了线了!
级别: 新手上路
可可豆: 22 CB
威望: 22 点
在线时间: 255(时)
发自: Web Page
最好不要用qq网页登录 各种坑&&时行时不行&&&&我们最后选择&&手机没有安装qq的时候隐藏qq登录
级别: 新手上路
UID: 462522
可可豆: 51 CB
威望: 34 点
在线时间: 175(时)
发自: Web Page
回 4楼(细雨蒙蒙飘) 的帖子
我们公司的app 也因为三方登陆被打回来3次,我们采用通过接口的形式,在审核期间,就把三方登陆隐藏掉,审核通过过 再打开,成功通过审核
级别: 圣骑士
UID: 235727
可可豆: 1881 CB
威望: 1346 点
在线时间: 1033(时)
发自: Web Page
回 6楼() 的帖子
没错,现在只能这样!我那微信支付的就被苹果弄死了!
级别: 新手上路
可可豆: 5 CB
威望: 5 点
在线时间: 56(时)
发自: Web Page
话说不管手机是否安装了QQ,都需要通过网页弹出来登陆,这样怎么做到?求助啊
级别: 新手上路
可可豆: 54 CB
威望: 54 点
在线时间: 259(时)
发自: Web Page
回 楼主(Kakarrot) 的帖子
我们也是这样,感觉是不是被苹果拉黑了,感觉隐藏就可以了,但是苹果说不行,审核组都给打电话了,说必须要网页登陆,晕死
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
公司项目需要支持不同平台(IOS,Android,网站)
这三个平台分别在腾讯开放平台和QQ互联申请了第三方登录功能。
使用第三方账号可以直接登录应用,不需要再填写站内注册信息。
APP ID 是不同的。
IOS: 110xxxxxxx06
Android: 110xxxxxxx50
网站: 101xxxx07
结果三个平台生成的用户 open_id 也是不同的。。。
这样就没有办法确定同一用户了。请问怎么解?
这才做到QQ登录,不知道微信登录是不是也有这个坑。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
github就没有openid这个东西,不过会返回用户的id,可以把那个id当作openid也就是用户的唯一标识。
QQ这个还真不好弄,不行你就只能弄一个主账号,然后第三方的做绑定。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
刚刚突然找到了这个。。但是似乎没有好的解决办法。
在网上查到了两种方法:
此方法适用于还未上线应用,没有用户数据需要迁移,亲测可用。
这个方法适用于已经在生产环境的应用,已经踩坑了,需要合并用户账号数据。这个方法我没有测试。
该问题最终通过向腾讯发送申请邮件的方式解决:
数据打通表格下载地址:
填写表格内容,发送给
后。一小时后(网上有人说要很久,但是我这里确实很快)就收到回复:
您好,已将所有appid设置统一unionID,可通过以下接口进行获取:/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1 ,请查看验证。
若后续遇到打通类疑问,请及时邮件反馈,为您核实处理。若遇到技术类、审核类问题可联系企业QQ:进行咨询,谢谢!
温馨提示:建议尽量不要修改移动的appid、网站的appid及开发者帐号等信息,避免使用报错。
腾讯为申请的用户特别开通了一个接口:/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1。可以获取唯一ID.
还附了接口说明:
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:iOS应用中QQ登陆的使用
_tencentOAuth = [[TencentOAuth alloc] initWithAppId: @"your app id" andDelegate: self];
- (void)tencentDidL
// 登录成功
- (void)tencentDidL
- (void)tencentDidNotLogin: (BOOL);
// 登录失败,一种为用户单击了取消按钮。
- (void)tencentDidNotN
// 没有网络
[_tencentOAuth authorize:_permissions inSafari:NO];
SinaWeibo *weiboOA
weiboOAuth = [[SinaWeibo alloc] initWithAppKey:kAppKey appSecret:kAppSecret appRedirectURI:kAppRedirectURI andDelegate: delegate];
QQ登陆的iOS_SDK
【QQ登录】IOS_SDK使用说明
QQ登录iOS SDK
封装了QQ登录的登录授权以及大部分OpenAPI,应用只需要修改相应参数,不需要理解验证授权流程,即可快速实现QQ登录功能。
iOS平台上(iPad,iPhone,iPod)的应用,请在appid,appkey后,使用QQ互联提供的iOS
本SDK仅适用于移动应用,即基于接入的应用。
v1.3 新版SDK以framework形式发布
新增1个设置QQ头像接口(setUserHeadpic)
新增2个微博相关接口(matchNickTips,getIntimateFriends)
新增2个会员相关接口(getVipInfo,getVipRichInfo)
1. iOS SDK
请到页面下载最新版本QQ登录iOS
SDK目录结构
iOS SDK包中带有两个文件:
1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。
2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。
3. 将iOS SDK文件添加到工程中
SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下。
然后将TencentOpenAPI.framework从SDK的保存目录拖拽到工程导航视图(project
navigator)中的Frameworks虚拟目录下。
2. 在弹出的对话框中勾选“Create
groups for any added folders”,去掉“copy items into destination group’s
folder(if needed)”,在Add to
targets中选择要加入SDK的target之后点击finish。完成之后就将IOS
SDK的framework文件加入了开发工程中。
添加SDK依赖的系统库文件。分别是“libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”。
在Xcode中打开工程配置文件,选择“summary”一栏。
4. 在“summary”中选择“Linked Frameworks and
Libraries”一栏,点击“+”图标。
直接在默认库文件中选择后点击“Add”,下图以添加“SystemConfiguration.framework”为例:
6. 返回后看到“SystemConfiguration.framework”已经在“Linked Frameworks and
Libraries”中出现。&
7. 在Xcode中打开工程配置文件,选择“Build Phases”一栏。
8.在“Build Phases”中选择展开“Copy Bundle Resources”一栏,并点击“+”图标
9. 选择“Add Other...”,进入iOS
SDK文件所在目录,选择TencentOpenApi_IOS_Bundle.bundle,点击回车或者点击“Open”。
10. 返回后看到TencentOpenApi_IOS_Bundle.bundle已经在“Copy Bundle
Resources”中出现。
11. 修改必要的工程配置属性。
在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker
Flags”配置项添加属性值“-fobjc-arc”。
4. 修改必要的代码
1. 修改工程配置文件
在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL
scheme”,新的scheme = tencent +
appid。如果您使用的是XCode3或者更低的版本,则需要在plist文件中添加。Demo中我们注册的appid是222222。如下图
2. 重写AppDelegate 的handleOpenURL和openURL方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL
*)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
return [TencentOAuth HandleOpenURL:url];
handleOpenURL:
- (BOOL)application:(UIApplication *)application
handleOpenURL:(NSURL *)url{
return [TencentOAuth HandleOpenURL:url];
3. 在代码中实现TencentSessionDelegate协议中的方法
具体协议可以参照TencentOpenAPI.framework
/Headers中的TencentOAuth.h文件中
4. 初始化iOS SDK API数据对象TencentOAuth。 (1)
创建TencentOAuth并初始化其appid,demo为222222。delegate为实现TencentSessionDelegate的对象:
_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"222222",
andDelegate:self];&
初始化redirectURI(这里需要填写注册APP时填写的域名。默认可以不用填写。建议不用填写。demo中注册时的地址是“”):
_tencentOAuth.redirectURI = @"";
(3)设置应用需要用户授权的API列表。&
(建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。):
_permissions = [[NSArray arrayWithObjects:@"get_user_info",
@"add_share", nil] retain];&
5. 调用SDK登录
1.登录时,调用TencetnOAuth对象的authorize方法:
[_tencentOAuth authorize:_permissions inSafari:NO];
2. 登录完成后,会调用TencentSessionDelegate中关于登录的协议方法。 登录成功:
@protocol TencentSessionDelegate
- (void)tencentDidLogin
_labelTitle.text = @"登录完成";
if (_tencentOAuth.accessToken && 0&!=
[_tencentOAuth.accessToken length])
// 记录登录用户的OpenID、Token以及过期时间
_labelAccessToken.text = _tencentOAuth.accessT
_labelAccessToken.text = @"登录不成功 没有获取accesstoken";
非网络错误导致登录失败:
@protocol TencentSessionDelegate
-(void)tencentDidNotLogin:(BOOL)cancelled
if (cancelled)
_labelTitle.text = @"用户取消登录";
_labelTitle.text = @"登录失败";
网络错误导致登录失败:
@protocol TencentSessionDelegate
-(void)tencentDidNotNetWork
_labelTitle.text=@"无网络连接,请设置网络";
3. 登录成功后,即可获取到access token和openid。accessToken和
openid保存在TencentOAuth对象中。可以通过相应的属性方法直接获得。
[_tencentOAuth accessToken]&;
[_tencentOAuth openId]&;
特别提示:&
1.由于登录是异步过程,这里可能会由于用户的行为导致整个登录的的流程无法正常走完,即有可能由于用户行为导致登录完成后不会有任何登录回调被调用。开发者在使用SDK进行开发的时候需要考虑到这点,防止由于一直在同步等待登录的回调而造成应用的卡死,建议在登录的时候将这个实现做成一个异步过程。
2.获取到的access
token具有3个月有效期,过期后提示用户重新登录授权。
3. 第三方网站可存储access
token信息,以便后续调用OpenAPI访问和修改用户信息时使用。如果需要保存授权信息,需要保存登录完成后返回的accesstoken,openid
expirationDate三个数据,下次登录的时候直接将这三个数据是设置到TencentOAuth对象中即可。
[_tencentOAuth accessToken]&;
[_tencentOAuth openId]&;
[_tencentOAuth expirationDate]&;
[_tencentOAuth
setAccessToken:accessToken]&;
[_tencentOAuth setOpenId:openId]&;
[_tencentOAuth
setExpirationDate:expirationDate]&;
建议应用在用户登录后,即调用getUserInfo接口获得该用户的头像、昵称并显示在界面上,使用户体验统一。
6. 调用SDK中的OpenAPI
SDK中具体支持的API种类和每条API的参数说明,请参照。这里用设置用户头像举例说明。
OpenAPI参数字典封装
在封装各接口的参数字典时,推荐使用为每个接口新增的参数封装辅助类,如:
接口(BOOL)addShareWithParams:(NSMutableDictionary *)params
对应辅助类TCAddShareDic
TCAddShareDic辅助类中属性:
@property (nonatomic, retain) TCRequiredStr paramT
对应于CGI请求中参数"title"
TCRequiredStr 表示这是一个必填参数,类型是字符串
TCOptionalStr 表示这是一个可选参数,类型是字符串
setUserHeadpic接口调用示例
设置QQ头像时,调用TencetnOAuth对象的setUserHeadpic方法:
TCSetUserHeadpic *params = [TCSetUserHeadpic dictionary];
params.paramImage =
params.paramFileName = @"make";
[_tencentOAuth setUserHeadpic:params];
设置头像完成后,会调用TencentSessionDelegate中的setUserHeadpicResponse返回调用结果:
@protocol TencentSessionDelegate &
- (void)setUserHeadpicResponse:(APIResponse*) response
if (nil == response)
if (URLREQUEST_FAILED == response.retCode
&& kOpenSDKErrorUserHeadPicLarge ==
response.detailRetCode)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"操作失败"
message:[NSString
stringWithFormat:@"您的图片大小超标啦,请更换一张试试呢:)"]
delegate:self cancelButtonTitle:@"我知道啦" otherButtonTitles:
[alert show];
[alert release];
SendStory接口调用示例
注意:SendStory需在管理后台开通权限方可调用:
以下信息必须在管理后台录入完整,且通过应用审核,状态为"已上线",才会有使用sendstory的权限,否则会返回错误。
b) 为了保证分享出来的feeds可以实现应用的呼起和下载,请开发者一定对包名、类名、iphone scheme、apk下载地址、iphone appstore
id的准确性做检查。
发送空间定向分享时,调用TencetnOAuth对象的sendStory:friendList:方法:
TCSendStoryDic *sendStoryDict = [TCSendStoryDic
dictionary];
sendStoryDict.paramTitle = @"Share Title";
sendStoryDict.paramSummary = @"Share Summary";
sendStoryDict.paramDescription = @"Share Description";
sendStoryDict.paramPics = @"http://aaa.bbb/ccc.png";
sendStoryDict.paramShareUrl = @"http://xxx.yyy/zzz";
NSArray *fopenIdArray = @[@"ABCD1234ABCD1234ABCD1234ABCD1234",
@"ABCD5678ABCD5678ABCD5678ABCD5678"];
[_tencentOAuth sendStory:sendStoryDict
friendList:fopenIdArray];
空间定向分享发送完成后,会调用TencentSessionDelegate中的sendStoryResponse返回调用结果:
@protocol TencentSessionDelegate
- (void)sendStoryResponse:(APIResponse *)response
if (URLREQUEST_SUCCEED == response.retCode
&& kOpenSDKErrorSuccess ==
response.detailRetCode)
NSMutableString *str=[NSMutableString
stringWithFormat:@""];
for (id key in response.jsonResponse) {
[str appendString: [NSString
stringWithFormat:@"%@:%@\n",key,[response.jsonResponse
objectForKey:key]]];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"操作成功"&
message:[[NSString stringWithFormat:@"%@",str]
decodeUnicode]
delegate:self
cancelButtonTitle:@"我知道啦"
otherButtonTitles: nil];
[alert show];
[alert release];
NSString *errMsg = [NSString stringWithFormat:@"errorMsg:%@\n%@",
response.errorMsg, [response.jsonResponse
objectForKey:@"msg"]];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"操作失败"&
message:errMsg
delegate:self
cancelButtonTitle:@"我知道啦"
otherButtonTitles: nil];
[alert show];
[alert release];
使用增量授权
当第三方应用调用某个API接口时,如果服务器返回操作未被授权,则会触发增量授权逻辑。第三方应用需自行实现tencentNeedPerformIncrAuth:withPermissions:协议接口才能够进入增量授权逻辑,否则默认第三方应用放弃增量授权。示例如下:
- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth
*)tencentOAuth&
withPermissions:(NSArray *)permissions
// incrAuthWithPermissions是增量授权时需要调用的登录接口
// permissions是需要增量授权的权限列表
[tencentOAuth incrAuthWithPermissions:permissions];
return NO; // 返回NO表明不需要再回传未授权API接口的原始请求结果;
// 否则可以返回YES
注意:在用户通过增量授权页重新授权登录后,第三方应用需更新自己维护的token及有效期限等信息。&**用户在增量授权时是可以更换帐号进行登录的,强烈要求第三方应用核对增量授权后的用户openid是否一致,以添加必要的处理逻辑(用户帐号变更需重新拉取用户的资料等信息)**
增量授权成功时,会通过tencentDidUpdate:协议接口通知第三方应用:
- (void)tencentDidUpdate:(TencentOAuth *)tencentOAuth
_labelTitle.text = @"增量授权完成";
if (tencentOAuth.accessToken
&& 0&!= [tencentOAuth.accessToken
{ // 在这里第三方应用需要更新自己维护的token及有效期限等信息
//&**务必在这里检查用户的openid是否有变更,变更需重新拉取用户的资料等信息**&_labelAccessToken.text
= tencentOAuth.accessT
_labelAccessToken.text = @"增量授权不成功,没有获取accesstoken";
增量授权失败时,会通过tencentFailedUpdate:协议接口通知第三方应用:
- (void)tencentFailedUpdate:(UpdateFailType)reason
switch (reason)
case kUpdateFailNetwork:
_labelTitle.text=@"增量授权失败,无网络连接,请设置网络";
case kUpdateFailUserCancel:
_labelTitle.text=@"增量授权失败,用户取消授权";
case kUpdateFailUnknown:
_labelTitle.text=@"增量授权失败,未知错误";
返回数据说明
APIResponse属性:
retCode - 网络请求返回码,主要表示服务器是否成功返回数据
seq - 请求的序列号,依次递增,方便内部管理
errorMsg - 错误消息
jsonResponse -
由服务器返回的json格式字符串转换而来的json字典数据(具体参数字段请参见对应API说明文档)
message - 服务器返回的原始字符串数据
detailRetCode - 新增的详细错误码,以区分不同的错误原因(v1.2以及之前的SDK接口无此参数)
返回码说明
retCode网络请求返回码说明:
0 表示成功,请求成功发送到服务器,并且服务器返回的数据格式正确
1 表示失败,可能原因有网络异常,或服务器返回的数据格式错误,无法解析
detailRetCode详细错误码说明:
kOpenSDKInvalid -无效的错误码
[公共错误码]
kOpenSDKErrorSuccess - 成功
kOpenSDKErrorUnknown - 未知错误
kOpenSDKErrorUserCancel - 用户取消
kOpenSDKErrorReLogin - token无效或用户未授权相应权限需要重新登录
kOpenSDKErrorOperationDeny - 第三方应用没有该api操作的权限
[网络相关错误码]
kOpenSDKErrorNetwork - 网络错误,网络不通或连接不到服务器
kOpenSDKErrorURL - URL格式或协议错误
kOpenSDKErrorDataParse - 数据解析错误,服务器返回的数据解析出错
kOpenSDKErrorParam - 传入参数错误
kOpenSDKErrorConnTimeout - http连接超时
kOpenSDKErrorSecurity - 安全问题
kOpenSDKErrorIO - 下载和文件IO错误
kOpenSDKErrorServer - 服务器端错误
[webview中特有错误]
kOpenSDKErrorWebPage - 页面错误
[设置头像 自定义错误码段]
kOpenSDKErrorUserHeadPicLarge - 图片过大 设置头像自定义错误码
7. iOS SDK安全登录
iOS SDK 1.4支持应用跳转到手机QZone
iOS版本进行QQ登录。使用手机QZone进行登录的方式会给用户提供更加安全,快捷的体验
。这种方式仅仅需要用户安装最新版本的手机QZone,版本号为3.5或者更高版本。应用开发者不需要添加任何代码。
在没有安装手机QZone(3.5或更高)的情况下,SDK按原流程进行授权登录,跳转到登录页面。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 ios现在最新版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信