全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android实现QQ登录功能

QQ登录是一个非常简单的一个第三方应用,现在,我们就来实现一个QQ登录
首先下载两个jar包   这里上传不了jar包,所以可以到我的github中下载工程中libs中的两个jar包

网址:https://github.com/chengzexiang/qqlogin

打代码前,先把这些东西写上:

private static final String TAG = "MainActivity"; 
private static final String APP_ID = "1105602574";//官方获取的APPID 
private Tencent mTencent; 
private BaseUiListener mIUiListener; 
private UserInfo mUserInfo; 

在AndroidManifest.xml中加入权限  

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <!-- 注册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"/> 

 Xml布局中的

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
 xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:app="http://schemas.android.com/apk/res-auto" 
 android:orientation="vertical" 
 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
 android:layout_height="match_parent" tools:context="com.bwei.czx.czx0914qq.MainActivity"> 
 
 <Button 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="登录" 
  android:id="@+id/login"/> 
 <TextView 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:id="@+id/name"/> 
 <ImageView 
  android:layout_width="100dp" 
  android:layout_height="80dp" 
  android:id="@+id/img"/> 
 
</LinearLayout> 

下面开始MainActivity中的代码

package com.bwei.czx.czx0914qq; 
 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
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.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 { 
 private static final String TAG = "MainActivity"; 
 private static final String APP_ID = "1105602574";//官方获取的APPID 
 private Tencent mTencent; 
 private BaseUiListener mIUiListener; 
 private UserInfo mUserInfo; 
 private Button login; 
 private TextView name; 
 private ImageView img; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  //传入参数APPID和全局Context上下文 
  mTencent = Tencent.createInstance(APP_ID, MainActivity.this.getApplicationContext()); 
 
  initView(); 
  login.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    mIUiListener = new BaseUiListener(); 
    //all表示获取所有权限 
    mTencent.login(MainActivity.this,"all", mIUiListener); 
    mUserInfo = new UserInfo(MainActivity.this, mTencent.getQQToken()); //获取用户信息 
    mUserInfo.getUserInfo(mIUiListener); 
   } 
  }); 
 } 
 
 private void initView() { 
  login = (Button) findViewById(R.id.login); 
  name = (TextView) findViewById(R.id.name); 
  img = (ImageView) findViewById(R.id.img); 
 } 
 /** 
  * 自定义监听器实现IUiListener接口后,需要实现的3个方法 
  * onComplete完成 onError错误 onCancel取消 
  */ 
 private class BaseUiListener implements IUiListener { 
 
  @Override 
  public void onComplete(Object response) { 
   Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); 
   Log.e(TAG, "response:" + response); 
   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() { 
     @Override 
     public void onComplete(Object response) { 
      Log.e(TAG,"登录成功"+response.toString()); 
      if(response == null){ 
       return; 
      } 
      try { 
       JSONObject jo = (JSONObject) response; 
        Toast.makeText(MainActivity.this, "登录成功", 
          Toast.LENGTH_LONG).show(); 
       String nickName = jo.getString("nickname"); 
       String figureurl_1= jo.getString("figureurl_1"); 
       name.setText(nickName); 
       ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(MainActivity.this).build(); 
       ImageLoader.getInstance().init(configuration); 
       ImageLoader.getInstance().displayImage(figureurl_1,img); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } 
     } 
 
     @Override 
     public void onError(UiError uiError) { 
      Log.e(TAG,"登录失败"+uiError.toString()); 
     } 
 
     @Override 
     public void onCancel() { 
      Log.e(TAG,"登录取消"); 
 
     } 
    }); 
   } catch (JSONException e) { 
    e.printStackTrace(); 
   } 
  } 
 
  @Override 
  public void onError(UiError uiError) { 
   Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); 
 
  } 
 
  @Override 
  public void onCancel() { 
   Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); 
 
  } 
 
 } 
 @Override 
 protected 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登录完成!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # QQ登录  # Android Studio实现简单的QQ登录界面的示例代码  # Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解  # Android仿QQ在状态栏显示登录状态效果  # Android Studio实现第三方QQ登录操作代码  # Android第三方登录之QQ登录  # Android第三方登录之腾讯QQ登录的实例代码  # Android QQ登录界面绘制代码  # Android实现QQ登录界面遇到问题及解决方法  # Android调用第三方QQ登录代码分享  # Android实现简单QQ登录页面  # 自定义  # 就来  # 先把  # 第三方  # 是一个非常  # 写上  # 大家多多  # 显示效果  # 上传  # portrait  # Xml  # Translucent  # NoTitleBar  # screenOrientation  # utf  # LinearLayout  # xmlns  # version  # encoding  # data 


相关文章: 广州美橙建站如何快速搭建多端合一网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何用已有域名快速搭建网站?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  网站按钮制作软件,如何实现网页中按钮的自动点击?  临沂网站制作公司有哪些,临沂第四中学官网?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  jQuery 常见小例汇总  湖北网站制作公司有哪些,湖北清能集团官网?  详解jQuery停止动画——stop()方法的使用  建站之星代理如何优化在线客服效率?  如何快速搭建个人网站并优化SEO?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  韩国服务器如何优化跨境访问实现高效连接?  建站之星导航菜单设置与功能模块配置全攻略  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何确保FTP站点访问权限与数据传输安全?  如何在万网主机上快速搭建网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何设置并定期更换建站之星安全管理员密码?  详解jQuery中基本的动画方法  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何在建站之星绑定自定义域名?  如何通过虚拟主机快速完成网站搭建?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在局域网内绑定自建网站域名?  网站制作服务平台,有什么网站可以发布本地服务信息?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何快速完成中国万网建站详细流程?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  建站10G流量真的够用吗?如何应对访问高峰?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何高效配置香港服务器实现快速建站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  建站之星CMS五站合一模板配置与SEO优化指南  如何通过NAT技术实现内网高效建站?  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站之星后台管理如何实现高效配置?  免费视频制作网站,更新又快又好的免费电影网站?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  济南专业网站制作公司,济南信息工程学校怎么样?  如何通过二级域名建站提升品牌影响力?  制作宣传网站的软件,小红书可以宣传网站吗?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速建站并高效导出源代码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。