Android实现第三方登录并获取到头像、名字
首先导入架包
下面还需要一个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实现第三方登录并获取到头像、名字相关推荐
- android qq第三方登录,Android调用第三方QQ登录代码分享
本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下 ...
- Android UmengShareSDK第三方登录
Android UmengShareSDK 第三方登录- 今天就不废话了,集成平台第三方登录.市面上集成平台有shareSDK 和 Ument两种,shareSDK的ipa和服务好些,如果自己研究会很 ...
- android sina oauth2.0 code认证,Android通过第三方登录理解oauth2.0机制
1. OAuth2.0介绍 说到第三方登录,离不开oauth2.0,oauth2.0是"用户认证和授权的标准",是从oauth1.0基础上发展来的.下图是oauth2.0六个过程分 ...
- Android 基于第三方登录(使用Bmob后端云存储数据)实现记忆用户登录、不必重复登录
最近在开发一个Android 社交app,其中引入了第三方登录的接口,数据存储使用Bmob后端云.有个问题曾困扰了我很久,就是记忆用户登录的问题.众所周知,如果是自己的服务器,进行用户登录,其实完全可 ...
- 支付宝第三方登录 并获取登录用户的基本信息
1.去官网查看开发所需步骤快速接入 https://opendocs.alipay.com/open/263/105809/ 2.创建网页&移动应用(注意不是第三方应用,如果这里选第三方 ...
- 微博第三方登录,获取用户信息(昵称、头像、地址等信息)
一.微博开发文档 链接: 根据用户ID获取用户信息 二.请求示例 URL https://api.weibo.com/2/users/show.json HTTP请求方式 GET 请求参数 请求参数k ...
- android微信第三方登录怎么通过code获取openid?
2019独角兽企业重金招聘Python工程师标准>>> 方法1: 1.登录公众账号设置OAuth2.0 2.设置菜单按钮URL为OAuth链接 3.页面后台获取: public St ...
- Android 集成 google 登录并获取 性别等隐私信息
前言 公司做海外产品的,集成的是 google 账号登录,账号信息.邮箱等这些不涉及隐私的按 google 的正常登录流程可以轻松实现 .但是一旦需要获取涉及隐私的信息就比较麻烦,文档也不是十分清晰, ...
- Android Facebook第三方登录 20200529
2020年5月29日09点43分 登录Facebook开发者后台 创建应用 这里点击产品的加号,在右侧选择Facebook登录里面的设置.这样左边的产品下面才会有一个Facebook登录. 打开And ...
最新文章
- 使用C++实现一套简单的状态机模型——实例
- xilinx vivado烧录s29gl256p-bpi-x8
- dpo指标详解买入绝技_巴菲特点破A股市场:5年前5178点买入5万元上峰水泥股票,持有到现在会有怎样的收益?从贫穷到富有...
- 完美解决Invalid layout of java.lang.String at value问题的方法
- Nature子刊:视网膜计算使眼睛先于大脑产生视觉信息
- effective c#读书笔记之二 静态成员的初始化
- AI生成手写数字 + 智能卡点切图
- Vue+Openlayers显示TileWMS时不显示默认控件放大缩小旋转等组件
- linux系统根分区挂载出错 系统无法,用虚拟机安装linux时显示“没有定义根文件系统,请到分区菜单以修正此错误”,是什么意思,肿么弄谢谢各位...
- CSS3笔记之基础篇(三)文字与字体
- C# 设置当前程序调用的dll文件以及其他文件的寻址路径
- 排序算法:归并排序算法实现及分析
- k均值例子 数据挖掘_【十大经典数据挖掘算法】k-means
- IE6 透明遮挡falsh解决方案
- Apache Commons Pool试用小记
- VS Code 新版本重磅发布,迎来 2020 年首个重大更新!
- java 通过 Properties类 读取ini文件 键—值对
- VBlog项目代码理解之后端
- Tumblr营销大法(三)
- 苹果macOS 13 Ventura beta版如何转成正式版?如何将 MacOS Beta 版更新为正式版?