一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Swift QQ授权登录,并获取个人信息(用户资料)的例子

时间:2016-03-08 编辑:简简单单 来源:一聚教程网

现在很多APP或者网站都支持使用QQ帐号进行登录。本文演示如何实现QQ的第三方登录,以及登录后的获取用户的个人信息。
 

1,腾讯开放平台注册,以及SDK的配置(这个可以官方去找)

2,登录授权,并获取用户资料信息

(1)点击“登录并获取用户资料”按钮
原文:Swift - QQ授权登录,并获取个人信息(用户资料)
(2)程序会自动跳转到QQ,显示登录页面(页面上会显示需要的授权)
原文:Swift - QQ授权登录,并获取个人信息(用户资料)
(3)登录成功后又会自动返回原来的APP。本样例中我们在登录成功后,获取用户信息并打印出来
原文:Swift - QQ授权登录,并获取个人信息(用户资料)
附:返回参数说明
参数名称 描述
ret 返回码。详见公共返回码说明#OpenAPI V3.0 返回码
msg 如果错误,返回错误信息。
is_lost 判断是否有数据丢失。如果应用不使用cache,不需要关心此参数。
0或者不返回:没有数据丢失,可以缓存。
1:有部分数据丢失或错误,不要缓存。
nickname 昵称。
gender 性别。
country 国家(当pf=qzone、pengyou或qplus时返回)。
province 省(当pf=qzone、pengyou或qplus时返回)。
city 市(当pf=qzone、pengyou或qplus时返回)。
figureurl 头像URL。详见:前端页面规范#6. 关于用户头像的获取和尺寸说明
openid 用户QQ号码转化得到的ID(当pf=qplus时返回)。
qq_level 用户QQ等级(当pf=qplus时返回)。
qq_vip_level 用户QQ会员等级(当pf=qplus时返回)。
qplus_level 用户Q+等级(当pf=qplus时返回)。
is_yellow_vip 是否为黄钻用户(0:不是; 1:是)。
(当pf=qzone、pengyou或qplus时返回)
is_yellow_year_vip 是否为年费黄钻用户(0:不是; 1:是)。
(当pf=qzone、pengyou或qplus时返回)
yellow_vip_level 黄钻等级,目前最高级别为黄钻8级(如果是黄钻用户才返回此参数)。
(当pf=qzone、pengyou或qplus时返回)
is_yellow_high_vip 是否为豪华版黄钻用户(0:不是; 1:是)。
(当pf=qzone、pengyou或qplus时返回)
is_blue_vip 是否为蓝钻用户(0:不是; 1:是)。
(当pf=qqgame或3366时返回)
is_blue_year_vip 是否为年费蓝钻用户(0:不是; 1:是)。
(当pf=qqgame或3366时返回)
blue_vip_level 蓝钻等级(如果是蓝钻用户才返回此参数)。
(当pf=qqgame或3366时返回)
3366_level 3366用户的大等级。
(当pf=3366时返回)
3366_level_name 3366用户的等级名,如小游游、小游仙。
(当pf=3366时返回)
3366_grow_level 3366用户的成长等级。
(当pf=3366时返回)
3366_grow_value 3366用户的成长值。
(当pf=3366时返回)
is_super_blue_vip 是否是豪华蓝钻。
(当pf=qqgame或3366时返回)

(4)样例代码:


import UIKit
 
class ViewController: UIViewController, TencentSessionDelegate{
     
    var _tencentOAuth:TencentOAuth!
     
    override func viewDidLoad() {
        super.viewDidLoad()
         
        _tencentOAuth = TencentOAuth.init(appId: "1105212016", andDelegate: self)
    }
     
    //登录按钮点击
    @IBAction func login(sender: AnyObject) {
        //设置权限列表
        let permissions = ["get_user_info","get_simple_userinfo"];
        //登陆
        _tencentOAuth.authorize(permissions)
    }
     
    //登陆完成调用
    func tencentDidLogin() {
        if !_tencentOAuth.accessToken.isEmpty {
            print("----------------------------------------")
            print("登录成功!")
            print("openId:\(_tencentOAuth.openId)",
                "accessToken:\(_tencentOAuth.accessToken)",
                "expirationDate:\(_tencentOAuth.expirationDate)")
            print("开始获取用户资料")
            _tencentOAuth.getUserInfo()
        }else {
            print("登录失败!没有获取到accessToken")
        }
    }
     
    /**
    * 登录失败后的回调
    */
    func tencentDidNotLogin(cancelled:Bool) {
        if cancelled {
             print("用户取消登录!")
        }else{
             print("登录失败!")
        }
    }
     
    /**
    * 登录时网络有问题的回调
    */
    func tencentDidNotNetWork() {
        print("没有网络,无法登录!")
    }
     
    /**
     * 取得用户信息的回调
     */
    func getUserInfoResponse(response:APIResponse) {
        print("----------------------------------------")
        print("用户资料获取成功:")
        print(response.jsonResponse)
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

3,退出登录

要退出登录、取消授权。只需要调用 TencentOAuth 对象的 logout() 方法即可。

_tencentOAuth.logout(self)

热门栏目