腾讯QQ第三方登录的实现
来源:互联网 发布:unity3d怎么制作人物 编辑:程序博客网 时间:2024/04/27 16:01
腾讯开放平台首页
SDK下载中心
- 先看下Manifests所需要的权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 需要注册的Activity
<activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent222222" /> </intent-filter></activity><activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- 这里使用到的KEY是腾讯默认测试的222222
//获取tencent实例tencent = Tencent.createInstance(KEY, getApplicationContext());/** * 登录,第二个参数代表权限 */tencent.login(MainActivity.this, "all", listener);
这里获取到的是腾讯返回的唯一标识(openID,accessToken等)
//登录回调接口private IUiListener listener = new IUiListener() { @Override public void onComplete(Object response) { try { JSONObject object = new JSONObject(response + ""); int ret = object.getInt("ret"); if (ret == 0) { Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show(); String openID = object.getString("openid"); String accessToken = object.getString("access_token"); String expires = object.getString("expires_in"); tencent.setOpenId(openID); tencent.setAccessToken(accessToken, expires); /** * 获取用户昵称,头像等信息 */ UserInfo userInfo = new UserInfo(MainActivity.this, tencent.getQQToken()); userInfo.getUserInfo(new MyIUiListener()); } } catch (Exception e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { } @Override public void onCancel() { }};
然后获取用户基本信息
private class MyIUiListener implements IUiListener { @Override public void onComplete(Object obj) { try { JSONObject object = new JSONObject(obj + ""); String ret = object.getString("ret"); String is_lost = object.getString("is_lost"); String nickname = object.getString("nickname"); String gender = object.getString("gender"); String province = object.getString("province"); String city = object.getString("city"); /** *头像会有几个不同的尺寸的地址,我只取了其中一个 */ final String figureurl_qq_2 = object.getString("figureurl_qq_2"); nickName.setText(nickname); new Thread(new Runnable() { @Override public void run() { Bitmap bitmap = MyUtil.downLoadImage(figureurl_qq_2); Message message = new Message(); message.obj = bitmap; handler.sendMessage(message); } }).start(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { } @Override public void onCancel() { }}
然后就是调用分享功能
private void createShare() { final Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, "a_zhon"); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "我自己的QQ"); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://blog.csdn.net/a_zhon"); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"); tencent.shareToQQ(MainActivity.this, params, shareListener);}
还须重写onActivityResult方法,不然获取不到用户信息(貌似不重写也能获取到用户信息,有兴趣的童鞋可以自己试一下)
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //QQ登录回调 if (requestCode == Constants.REQUEST_LOGIN) { Tencent.onActivityResultData(requestCode, resultCode, data, listener); }
有需要的可以下载一下Demo下载
OK大功告成,然后就下班回家吃饭了。。。
4 0
- 腾讯QQ第三方登录的实现
- QQ腾讯第三方登录
- 第三方QQ账号登录的实现
- 第三方登录 腾讯QQ为例
- QQ实现第三方登录
- 实现QQ第三方登录
- QQ第三方登录实现
- QQ的第三方登录
- QQ的第三方登录
- android第三方登录之腾讯QQ登录
- 腾讯QQ第三方登录2:原理与实现(OAuth2.0协议)
- 【Android】第三方QQ账号登录的实现
- 实现QQ的第三方登录 iOS开发
- 基于Spring的QQ第三方登录实现
- iOS QQ第三方登录的简单实现
- iOS QQ实现第三方登录以及遇到的问题
- iOS QQ实现第三方登录以及遇到的问题
- 基于Spring的QQ第三方登录实现
- leetcode刷题感想
- Linux(CentOS)挂载移动硬盘,实现文件拷贝、备份
- 根据时间段和数据库表名的前缀获取表名
- iOS UIlabel怎么加载html字符串 富文本的用法
- php命令行传参
- 腾讯QQ第三方登录的实现
- CentOS下调整home和根分区大小
- Java 去除难看的if-else
- 学习opencv——人脸识别
- java jdk1.7版本的HashMap原理解析
- Git分支操作命令
- poj3130How I Mathematician Wonder What You Are!+半平面交
- Ionic 常见问题及解决方案
- redhat5.7安装iotop经历