Android 集成QQ登录,获取头像与昵称
2018-02-05 12:01
921 查看
QQ登录集成
腾讯开放平台地址:http://open.qq.com/如果没注册过的同学需要先注册,还要上传自己的手持身份证的证件照,腾讯审核通过后才能注册成功。
创建应用,获取appID。如果测试只要你创建应用,就会给你分配一个appid,其他的不用管;如果真正用于项目中,就需要把腾讯要求的都填好。
下载腾讯的SDK,地址:http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
路径如下:android_SDK_3.3.1\opensdk_lite+demo\opensdk_lite+demo\libs
下载后解压,如下:
打开jar包,将里面的open_sdk_r5990_lite.jar复制到你的modle的libs中,然后再右键AddAsLirary添加依赖。
准备完毕,写入所需要的权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<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" /> <!-- 这地方需要用你在开放平台申请的appid:tencent+appid --> <data android:scheme="tencent1106646963" /> </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" />
图片加载使用了Fresco加载,需要导入依赖:
compile 'com.facebook.fresco:fresco:+'
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal"> <com.facebook.drawee.view.SimpleDraweeView app:roundAsCircle="true" android:id="@+id/iv_figure" app:failureImage="@mipmap/ic_launcher_round" app:placeholderImage="@mipmap/ic_launcher_round" android:layout_marginTop="20dp" android:layout_width="200dp" android:src="@mipmap/ic_launcher_round" android:layout_height="200dp"/> <TextView android:id="@+id/tv_nickname" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="QQ 昵称"/> <Button android:id="@+id/btn_login" android:layout_width="200dp" android:layout_height="wrap_content" android:text="登录"/> <Button android:id="@+id/btn_logout" android:layout_width="200dp" android:layout_height="wrap_content" android:text="退出"/> </LinearLayout>
效果图:
MainActivity Java代码
import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.bumptech.glide.Glide; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.view.SimpleDraweeView; import com.tencent.connect.UserInfo; import com.tencent.connect.auth.QQToken; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; import org.json.JSONException; import org.json.JSONObject; /** * Author:Zhangpengfei * Date:2018/2/5 * email:1271396448@qq.com */ public class MainActivity extends AppCompatActivity { private Button login, logout; private Tencent mTencent; private static final String APPID = "1105771437"; private QQLoginListener mListener; private UserInfo mInfo; private SimpleDraweeView figure; private TextView nickName; private String name, figureurl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fresco.initialize(this); setContentView(R.layout.activity_main); initView(); } private void initView() { figure = (SimpleDraweeView) findViewById(R.id.iv_figure); nickName = (TextView) findViewById(R.id.tv_nickname); mListener = new QQLoginListener(); // 实例化Tencent if (mTencent == null) { mTencent = Tencent.createInstance(APPID, this); } // 点击登录 login = (Button) findViewById(R.id.btn_login); login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { QQLogin(); } }); // 点击退出 logout = (Button) findViewById(R.id.btn_logout); logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mTencent.isSessionValid()) { mTencent.logout(MainActivity.this); figure.setImageResource(R.mipmap.ic_launcher_round); nickName.setText("QQ 昵称"); } } }); } /** * 登录方法 */ private void QQLogin() { //如果session不可用,则登录,否则说明已经登录 if (!mTencent.isSessionValid()) { mTencent.login(this, "all", mListener); } } // 实现登录成功与否的接口 private class QQLoginListener implements IUiListener { @Override public void onComplete(Object object) { //登录成功 //获取openid和token initOpenIdAndToken(object); //获取用户信息 getUserInfo(); } @Override public void onError(UiError uiError) { //登录失败 } @Override public void onCancel() { //取消登录 } } private void initOpenIdAndToken(Object object) { JSONObject jb = (JSONObject) object; try { String openID = jb.getString("openid"); //openid用户唯一标识 String access_token = jb.getString("access_token"); String expires = jb.getString("expires_in"); mTencent.setOpenId(openID); mTencent.setAccessToken(access_token, expires); } catch (JSONException e) { e.printStackTrace(); } } private void getUserInfo() { QQToken token = mTencent.getQQToken(); mInfo = new UserInfo(MainActivity.this, token); mInfo.getUserInfo(new IUiListener() { @Override public void onComplete(Object object) { JSONObject jb = (JSONObject) object; try { name = jb.getString("nickname"); figureurl = jb.getString("figureurl_qq_2"); //头像图片的url /*Log.i("imgUrl",figureurl.toString()+"");*/ nickName.setText(name); /*Glide.with(MainActivity.this).load(figureurl).into(figure);*/ Uri parse = Uri.parse(figureurl); figure.setImageURI(parse); } catch (Exception e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { } @Override public void onCancel() { } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mTencent.onActivityResultData(requestCode, resultCode, data, mListener); } }
不会弄动图所以这里就不展示运行效果了,这些代码上传完毕之后就可以直接运行了
相关文章推荐
- 友盟第三方登录获取QQ的头像和昵称
- 分别嵌入 新浪微博、QQ、微信 做第三方授权登录 获取到头像 昵称等信息
- 友盟第三方登录获取QQ的头像和昵称
- Android 实现qq第三方登录并获取qq基本信息
- 聊聊Android端集成环信头像和昵称的处理
- 第三方登录QQ+获取QQ头像
- Android之QQ授权登录获取用户信息
- Android使用ShareSDK集成QQ、微信、微博等第三方登录
- Android qq 登录 界面 圆头像
- QQ第三方登录获取头像
- android 即时通讯 容云集成 融云会话界面 融云会话列表 头像和昵称设置
- Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解
- Android友盟集成QQ、微信、微博等第三方登录与分享
- 第三方登录获取头像和昵称
- 友盟第三方QQ登录和获取用户登录信息并设置用户头像
- Android实现类似QQ头像点击打开相册或者拍照,并获取裁剪后的图片
- Android使用友盟集成QQ、微信、微博等第三方登录
- Android集成QQ登录
- AndroidQQ第三方登录个人详情获取
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)。