第三方qq登陆获取个人信息

QQ登录iOS SDK 封装了QQ登录的登录授权以及大部分OpenAPI,应用只需要修改相应参数,不需要理解验证授权流程,即可快速实现QQ登录功能。

iOS平台上(iPad,iPhone,iPod)的应用,请在申请appid,appkey后,使用QQ互联提供的iOS SDK。

//申请网址 http://connect.qq.com

1. iOS SDK 下载

请到SDK下载页面下载最新版本QQ登录iOS SDK。

2. iOS SDK目录结构

iOS SDK包中带有两个文件:

1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。

2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。

3. 将iOS SDK文件添加到工程中

1. 将iOS 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文件加入了开发工程中。

3. 添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。

4. 在Xcode中打开工程配置文件,选择“Build Phases”一栏。

5.在“Build Phases”中选择展开“Copy Bundle Resources”一栏,并点击“+”图标

6. 选择“Add Other...”,进入iOS SDK文件所在目录,选择TencentOpenApi_IOS_Bundle.bundle,点击回车或者点击“Open”。

7. 修改必要的工程配置属性。

在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”。

4. 修改必要的代码

4.1 修改工程配置文件

在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL scheme”,新的scheme = tencent + appid。如果您使用的是XCode3或者更低的版本,则需要在plist文件中添加。Demo中我们注册的appid是222222。如下图

另外在Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。

4.2 重写AppDelegate 的handleOpenURL和openURL方法

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];

}

4.3 在代码中实现TencentSessionDelegate协议中的方法

具体协议可以参照TencentOpenAPI.framework /Headers中的TencentOAuth.h文件

4.4 初始化iOS SDK API数据对象TencentOAuth。

(1) 创建TencentOAuth并初始化其appid,demo为222222。delegate为实现TencentSessionDelegate的对象:

_tencentOAuth = [[TencentOAuth alloc]
initWithAppId:@"222222",   andDelegate:self];

这里delegate不能为空
(2) 初始化redirectURI(这里需要填写注册APP时填写的域名。默认可以不用填写。建议不用填写。demo中注册时的地址是“www.qq.com”):

_tencentOAuth.redirectURI =
@"www.qq.com";

(3)设置应用需要用户授权的API列表。

(建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。):

_permissions =  [[NSArray
arrayWithObjects:@"get_user_info", @"get_simple_userinfo",
@"add_t", nil] retain];

5. 调用SDK登录

1.登录时,调用TencetnOAuth对象的authorize方法:

[_tencentOAuth
authorize:_permissions inSafari:NO];

2. 登录完成后,会调用TencentSessionDelegate中关于登录的协议方法。
登录成功:

@protocol TencentSessionDelegate
<NSObject>

-
(void)tencentDidLogin

{

_labelTitle.text = @"登录完成";

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

{

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

_labelAccessToken.text =
_tencentOAuth.accessToken;

}

else

{

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

}

}

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

@protocol TencentSessionDelegate
<NSObject>

-(void)tencentDidNotLogin:(BOOL)cancelled

{

if (cancelled)

{

_labelTitle.text = @"用户取消登录";

}

else

{

_labelTitle.text
= @"登录失败";

}

}

网络错误导致登录失败:

@protocol TencentSessionDelegate
<NSObject>

-(void)tencentDidNotNetWork

{

[email protected]"无网络连接,请设置网络";

}

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] ;

4. 建议应用在用户登录后,即调用getUserInfo接口获得该用户的头像、昵称并显示在界面上,使用户体验统一。

时间: 2024-12-09 13:05:30

第三方qq登陆获取个人信息的相关文章

ios 第三方qq登陆 {&quot;ret&quot;:100030,&quot;msg&quot;:&quot;this api without user authorization&quot;}

_permissions 授权信息列表问题 之前看官方文档这样写:   _permissions = [NSArray arrayWithObjects:@"get_user_info", nil]; 最后跟那边的技术人员交流才知这样才对 :_permissions = [NSArray arrayWithObjects:kOPEN_PERMISSION_GET_INFO, kOPEN_PERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIM

第三方QQ登陆遇到的问题

1.引入框架 2.设置URL Schemes QQ+十六进制appID tencent+十进制ID tencent1104922581 注: 两个都写上 3.设置白名单 如: 出现 -canOpenURL: failed for URL: “sinaweibohdsso://xxx” – error: “This app is not allowed to query for scheme mqqapi”问题, 就需要设置对应的白名单 other linker flag 设置为-objc 白名单

php curl登陆qq后获取用户信息时证书错误

今晚开放ecmall商城的QQ登陆功能,在回调时产生错误,file_get_contents函数执行时,没有抓取到正确的信息,于是改用curl,但是提示证书错误. 在网上找到了解决方法,就是去掉证书认证. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 网上还有另外一种说法,就是使用 curl_setopt($ch, CURLOPT_HTTPHEA

python 第三方qq登陆搜狗微信搜索

本博文只提供登陆的过程,不提供具体的代码,如果需要源码的请联系qq 516750653. 首先你应该对常见的加密算法比较了解,知道即可,还有你需要了解如果使用firebug进行js调试,需要比较熟练,其次你需要有一定阅读js的能力,起码你需要了解点击了某个按钮后将会有那些函数被会执行. 1 首先登陆qq, 在登陆qq之前将会进行一次check,其作用是检测你要登陆的账号是否被封,登陆是否需要输入验证码,还有这个check将会从服务器带回一个很重要的参数,该参数会加入到对qq密码加密的过程中,这个

微信授权登陆获取用户信息

根据微信api和自己实际项目开发: 1 public function getuserinfo() 2 { 3 if (isset($_GET['code'])) { 4 //获取access_token openid refresh_token 5 $url1 = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appid . '&secret=' . $this->secret . '&

新浪微博授权登陆获取个人信息

http://pan.baidu.com/s/1eQ7tNSA 这个是接入的phpsdk 和demo 一.phpsdk的组成 里面看到6个文件:callback.php.config.php.index.php.weibolist.php.weibooauth.php以及.DS_Store这6个文件. 看了下官方的API文档 http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6?sudaref=open.weibo.com

微信登陆获取用户信息

目前可试试这两个接口 后台需完善地方: 1.拼装微信扫一扫登录url:2.先微信返回access_token才能进行跳转,回调https://api.weixin.qq.com/sns/userinfo?access_token=获取到的ACCESS_TOKEN&openid=获取到的OPENID:3.返回用户信息 1.微信扫一扫获取二维码(点击登陆按钮,获取如下data数据,把此返回值解析成二维码展现给用户来微信扫码登陆) 接口: http://192.168.2.69:8080/client

使用第三方登录无法获取授权信息的可能原因。

项目中的第三方登录本来好好的,可以拿到授权信息,但是过了大概半个月,去看的时候发现授权之后怎么都拿不到第三方账号的信息了,纠结了好多天,准备从友盟换ShareSDK,demo都写好了,准备换的时候发现自己的代码设置里有这样一段代码,是iOS9之后官方推荐的设置回调的方法. //iOS9之后官方推荐用此方法 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,i

ios 第三方qq登陆,号码禁止授权

在以下加入測试账号就可以 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxpbmNleGlhb2hhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >