Android应用实现QQ授权登录

来源:互联网 发布:mac air 2017 编辑:程序博客网 时间:2024/05/01 12:17

前一段时间在Android应用中实现了QQ授权登录功能,虽然腾讯开放平台中有详细文档,看完后也觉得很简单,实际操作中却折腾了挺久才搞定!

本来开始不熟悉的时候参照Demo来实现是很容易的,奈何官网给的最新的示例代码编译都有问题!这里要吐槽一下官网了,连SDK的版本都不清晰,我已经下了几个版本的SDK了,每次下载的时候都认为是最新的,结果后面发现不是!目前认为最新版本是V2.6, 在这里提供下载。不过用这个SDK还是编译有问题,字符编码问题,找不到宏的问题等。

最后还是用旧的SDK版本(V1.5),运行Demo正常,参照它来很快就实现了。


关于QQ授权登录的实现,官网有详细描述,点击链接 。

这里根据自己的实现过程简单介绍一下整个过程:

1. 注册成为开发者,创建应用,获取appid,这个appid后面要用到。详情步骤请查看官网链接

2. 在你的Android工程中导入SDK库文件 open_sdk.jar    (SDK V1.5 下载地址:点击这里,需要2分,没分的朋友可以到我空间的资源中下载)

3. 配置AndroidManifest

    申请权限,加入appid,声明SDK中的activity

4. 创建Tencent类实例,实现回调接口IUiListener,IRequestListener

5. 调用QQ登录接口 

     调用Tencent.login(this, Scope, listener)

     其中listener是IUiListener接口,在登录成功后会调用onComplete回调,返回类似下面格式的JSONObject对象:

{
"ret":0,   //表示登录成功
"pay_token":"xxxxxxxxxxxxxxxx",
"pf":"openmobile_android",
"expires_in":"7776000",
"openid":"xxxxxxxxxxxxxxxxxxx",
"pfkey":"xxxxxxxxxxxxxxxxxxx",
"msg":"sucess",
"access_token":"xxxxxxxxxxxxxxxxxxxxx"
}


6. 获取用户信息

    在登录成功后,调用如下接口获取用户信息,此时的listener是IRequestListener接口

    Tencent.requestAsync(Constants.GRAPH_SIMPLE_USER_INFO, null, Constants.HTTP_GET, 
new BaseApiListener("get_simple_userinfo", false), EVENT_GET_USER_INFO)


    获取成功后SDK会调用IRequestListener的onComplete回调,返回类似下面的JSON数据

    {
"is_yellow_year_vip": "0",
"ret": 0,
"figureurl_qq_1":
"http://q.qlogo.cn/qqapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/40",
"figureurl_qq_2":
"http://q.qlogo.cn/qqapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/100",
"nickname": "小罗",
"yellow_vip_level": "0",
"msg": "",
"figureurl_1":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/50",
"vip": "0",
"level": "0",
"figureurl_2":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/100",
"is_yellow_vip": "0",
"gender": "男",
"figureurl":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/30"
}


到这里已经基本完成了QQ授权登录。


有几个问题还需要注意:

1.appid的有效性

  应用要上线并且通过审核后,使用的appid才可以正常进行QQ授权,否则只有你注册的QQ号可以成功授权登录,换其他QQ号登录时授权会失败。

  解决办法:

  a.应用申请上线,不过有的应用需要提供软件著作权

  b.设置协作者账号(点击官网说明,默认情况是注册的QQ为协作者帐号,可以添加多个)

  c.使用官网给的测试用的appid(222222)


2.没有调用回调

如果发生这种情况,检查一下这一条:

应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mTencent.onActivityResult(requestCode, resultCode, data);
}

    

0 6
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 农行卡转工行卡怎么办 外地人在北京交社保退休怎么办 身份证掉了单位宿舍怎么办居住证 广州租住单位宿舍怎么办居住证 公司u盾丢了怎么办 北京办了居住卡怎么办延期 商铺被陌生人注册左公司怎么办 营业执照年检登录密码忘了怎么办 欠人家钱没钱还怎么办 欠钱实在没钱还怎么办 党关系丢了10年怎么办? 离婚后生孩子怎么办出生证明 注册公司没有注册地址怎么办 银行流水不够2倍怎么办 个体户小店怎么办五险 姓和名五行相克怎么办? 三星s7刷机后计算器没有了怎么办 线雕鼻子山根鼓怎么办 在日本没有日币怎么办 明知合同回扣特别高怎么办 医院药品断货了怎么办 空腹吃菠萝胃疼怎么办 小孩黑户口怎么办上户 别人说名字起大了怎么办? 念佛号时心老是不集中怎么办 扑lv期嗓子痛头痛怎么办 公众号忘记了账号怎么办 公众号账号密码忘记了怎么办 现实生活被小人缠上怎么办 五行缺木和水怎么办 八字火旺的人怎么办 综合旺衰得分负怎么办 妈妈误打死一只黄鼠狼怎么办 油笔画在白墙上怎么办 壁纸上的水彩笔怎么办 隐形拉链头脱了怎么办 拉链的一边掉了怎么办 帝豪gs加了乙醇汽油怎么办 命理五行缺木怎么办 微信改名含有特殊符号怎么办 户口名字打错了怎么办