首先导入架包

下面还需要一个ImageLoader的依赖,用来加载图片

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

首先是清单文件里的代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.shiran.qqlogindemo">  <!-- QQ登录授权所需权限 -->  <uses-permission android:name="android.permission.INTERNET" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <application  android:allowBackup="true"  android:icon="@mipmap/ic_launcher"  android:label="@string/app_name"  android:supportsRtl="true"  android:theme="@style/AppTheme">  <activity android:name=".MainActivity">  <intent-filter>  <action android:name="android.intent.action.MAIN" />  <category android:name="android.intent.category.LAUNCHER" />  </intent-filter>  </activity>  <!-- 注册SDKActivity -->  <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="tencent1105602574" /> <!-- 开放平台获取的APPID -->  </intent-filter>  </activity>  <activity android:name="com.tencent.connect.common.AssistActivity"  android:theme="@android:style/Theme.Translucent.NoTitleBar"  android:screenOrientation="portrait"/>  </application>  </manifest>  

下面就是布局代码

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/log"android:text="点击登录扣扣"android:layout_width="match_parent"android:layout_height="wrap_content" /><ImageViewandroid:id="@+id/head"android:layout_below="@+id/log"android:layout_width="match_parent"android:layout_height="200dp" /><TextViewandroid:layout_below="@+id/head"android:id="@+id/name"android:text="name"android:padding="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</RelativeLayout>
MainActivity代码

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;import org.json.JSONException;
import org.json.JSONObject;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private ImageView head;private TextView name;private static final String TAG = "MainActivity";private static final String APP_ID = "1105602574";//官方获取的APPIDprivate Tencent mTencent;private BaseUiListener mIUiListener;private UserInfo mUserInfo;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTencent = Tencent.createInstance(APP_ID,MainActivity.this.getApplicationContext());Button log= (Button) findViewById(R.id.log);head = (ImageView) findViewById(R.id.head);name = (TextView) findViewById(R.id.name);log.setOnClickListener(this);DisplayImageOptions op=new DisplayImageOptions.Builder().build();ImageLoaderConfiguration con=new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(op).build();ImageLoader.getInstance().init(con);}@Overridepublic void onClick(View view) {mIUiListener = new BaseUiListener();//all表示获取所有权限mTencent.login(MainActivity.this,"all", mIUiListener);}private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(final Object response) {Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show();Log.e(TAG, "response:" + response);final JSONObject obj = (JSONObject) response;try {String openID = obj.getString("openid");String accessToken = obj.getString("access_token");String expires = obj.getString("expires_in");mTencent.setOpenId(openID);mTencent.setAccessToken(accessToken,expires);QQToken qqToken = mTencent.getQQToken();mUserInfo = new UserInfo(getApplicationContext(),qqToken);mUserInfo.getUserInfo(new IUiListener() {@Overridepublic void onComplete(Object response) {Log.e(TAG,"登录成功"+response.toString());System.out.println("=========="+response);JSONObject oo= (JSONObject) response;try {String   na = oo.getString("nickname");System.out.println("===解析的名字"+na);name.setText(na);String url=oo.getString("figureurl_2");System.out.println("===解析的url"+url);ImageLoader.getInstance().displayImage(url,head);} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onError(UiError uiError) {Log.e(TAG,"登录失败"+uiError.toString());}@Overridepublic void onCancel() {Log.e(TAG,"登录取消");}});} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onError(UiError uiError) {Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();}@Overridepublic void onCancel() {Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();}}/*** 在调用Login的Activity或者Fragment中重写onActivityResult方法* @param requestCode* @param resultCode* @param data*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode == Constants.REQUEST_LOGIN){Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener);}super.onActivityResult(requestCode, resultCode, data);}
}
如果有那点不懂,可以参考我的上一篇“第三方QQ登录”
里面有具体的方式
http://blog.csdn.net/bai981002/article/details/78737908

Android实现第三方登录并获取到头像、名字相关推荐

  1. android qq第三方登录,Android调用第三方QQ登录代码分享

    本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下 ...

  2. Android UmengShareSDK第三方登录

    Android UmengShareSDK 第三方登录- 今天就不废话了,集成平台第三方登录.市面上集成平台有shareSDK 和 Ument两种,shareSDK的ipa和服务好些,如果自己研究会很 ...

  3. android sina oauth2.0 code认证,Android通过第三方登录理解oauth2.0机制

    1. OAuth2.0介绍 说到第三方登录,离不开oauth2.0,oauth2.0是"用户认证和授权的标准",是从oauth1.0基础上发展来的.下图是oauth2.0六个过程分 ...

  4. Android 基于第三方登录(使用Bmob后端云存储数据)实现记忆用户登录、不必重复登录

    最近在开发一个Android 社交app,其中引入了第三方登录的接口,数据存储使用Bmob后端云.有个问题曾困扰了我很久,就是记忆用户登录的问题.众所周知,如果是自己的服务器,进行用户登录,其实完全可 ...

  5. 支付宝第三方登录 并获取登录用户的基本信息

    1.去官网查看开发所需步骤快速接入    https://opendocs.alipay.com/open/263/105809/ 2.创建网页&移动应用(注意不是第三方应用,如果这里选第三方 ...

  6. 微博第三方登录,获取用户信息(昵称、头像、地址等信息)

    一.微博开发文档 链接: 根据用户ID获取用户信息 二.请求示例 URL https://api.weibo.com/2/users/show.json HTTP请求方式 GET 请求参数 请求参数k ...

  7. android微信第三方登录怎么通过code获取openid?

    2019独角兽企业重金招聘Python工程师标准>>> 方法1: 1.登录公众账号设置OAuth2.0 2.设置菜单按钮URL为OAuth链接 3.页面后台获取: public St ...

  8. Android 集成 google 登录并获取 性别等隐私信息

    前言 公司做海外产品的,集成的是 google 账号登录,账号信息.邮箱等这些不涉及隐私的按 google 的正常登录流程可以轻松实现 .但是一旦需要获取涉及隐私的信息就比较麻烦,文档也不是十分清晰, ...

  9. Android Facebook第三方登录 20200529

    2020年5月29日09点43分 登录Facebook开发者后台 创建应用 这里点击产品的加号,在右侧选择Facebook登录里面的设置.这样左边的产品下面才会有一个Facebook登录. 打开And ...

最新文章

  1. 使用C++实现一套简单的状态机模型——实例
  2. xilinx vivado烧录s29gl256p-bpi-x8
  3. dpo指标详解买入绝技_巴菲特点破A股市场:5年前5178点买入5万元上峰水泥股票,持有到现在会有怎样的收益?从贫穷到富有...
  4. 完美解决Invalid layout of java.lang.String at value问题的方法
  5. Nature子刊:视网膜计算使眼睛先于大脑产生视觉信息
  6. effective c#读书笔记之二 静态成员的初始化
  7. AI生成手写数字 + 智能卡点切图
  8. Vue+Openlayers显示TileWMS时不显示默认控件放大缩小旋转等组件
  9. linux系统根分区挂载出错 系统无法,用虚拟机安装linux时显示“没有定义根文件系统,请到分区菜单以修正此错误”,是什么意思,肿么弄谢谢各位...
  10. CSS3笔记之基础篇(三)文字与字体
  11. C# 设置当前程序调用的dll文件以及其他文件的寻址路径
  12. 排序算法:归并排序算法实现及分析
  13. k均值例子 数据挖掘_【十大经典数据挖掘算法】k-means
  14. IE6 透明遮挡falsh解决方案
  15. Apache Commons Pool试用小记
  16. VS Code 新版本重磅发布,迎来 2020 年首个重大更新!
  17. java 通过 Properties类 读取ini文件 键—值对
  18. VBlog项目代码理解之后端
  19. Tumblr营销大法(三)
  20. 苹果macOS 13 Ventura beta版如何转成正式版?如何将 MacOS Beta 版更新为正式版?

热门文章

  1. 中国企业软件必然革命世界企业软件
  2. 基于WebRtc实现安卓视频一对一聊天
  3. 如何用html布天猫页面,天猫前端系列教材 (四十七)- 其他页面 - 登录页面
  4. [Java基础]--Java GC工作原理
  5. 每周一磁 · 磁滞回曲线和内禀退磁曲线(B-H曲线和J-H曲线)
  6. MRS IoTDB时序数据库的总体架构设计与实现
  7. Oracle学习笔记4
  8. 久坐伤身,这个3D坐垫能让危害降到最低,办公自驾必备!
  9. python c++情侣网名含义_python的对象与名字绑定(转贴,此文甚好)
  10. 不入小程序,则为大笨熊