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登录完成!

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

(0)

相关推荐

  • Android第三方登录之腾讯QQ登录的实例代码

    布局文件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功" android:textSize="25sp" android:layout_marginTop="100dp" /> 清单文件中的配置 <activity android:n

  • Android QQ登录界面绘制代码

    先看看效果图: 首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得到焦点并且有输入内容时) ---  这些问题都有一一解决 --- 以下是代码: 布局 fragment_main(问题2) <!-- android:focusable="true" android:focusableInTouchMode="true&qu

  • Android调用第三方QQ登录代码分享

    本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下载相关的jar包,放到工程的lib目录下. 2.在Manifest.xml里注册QQ相关的Activity,代码如下 <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOr

  • Android实现QQ登录界面遇到问题及解决方法

    先给大家炫下效果图: 首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得到焦点并且有输入内容时) ......... --- 这些问题都有一一解决 --- 以下是代码: 布局 fragment_main(问题2) <!-- android:focusable="true" android:focusableInTouchMode=&

  • 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 = "11

  • Java Web 实现QQ登录功能一个帐号同一时间只能一个人登录

    对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: 1 .在用户登录时,把用户添加到一个ArrayList中 2 .再次登录时查看ArrayList中有没有该用户,如果ArrayList中已经存在该用户,则阻止其登录 3 .当用户退出时,需要从该ArrayList中删除该用户,这又分为三种情况 ① 使用注销按钮正常退出 ② 点击浏览器关闭按钮或者用Alt+F4退出,可以用JavaScript捕捉该页面关闭事件, 执行一段Java方法删除ArrayList中的用户 ③ 非正常退出,比如

  • Android Studio实现登录功能案例讲解

    LoginActivity.java 包 com.hyx.example.mymap; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Ha

  • Android Studio 通过登录功能介绍SQLite数据库的使用流程

    前言: SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源的世

  • Android仿QQ在状态栏显示登录状态效果

    运行本实例,将显示一个用户登录界面,输入用户名(hpuacm)和密码(1111)后,单击"登录"按钮,将弹出如下图所示的选择登录状态的列表对话框, 单击代表登录状态的列表项,该对话框消失,并在屏幕的左上角显示代表登录状态的通知(如图) 过一段时间后该通知消失,同时在状态栏上显示代表该登录状态的图标(如图) 将状态栏下拉可以看到状态的详细信息(如图) 单击"更改登录状态"按钮,将显示通知列表.单击"退出"按钮,可以删除该通知. 具体实现方法: 此处

  • Android Studio实现第三方QQ登录操作代码

    来看看效果图吧     http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 下载SDKJar包 接下来就可以 实现QQ登录了, 新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中 导入一个下面架包就可以 项目结构如下 打开我们的清单文件Androidmanifest 在里面加入权限和注册Activity 如下 <?xml version="1.0" encoding

  • Android开发保存QQ密码功能

    本文实例为大家分享了Android保存QQ密码功能的具体代码,供大家参考,具体内容如下 技术要点: 使用文件储存的方式保存数据 实现步骤: ①用户交互界面的设计与实现②工具类(FileSaveQQjava )的设计与实现③界面逻辑代码的设计与实现 页面布局请看:Android开发实现简单QQ登录页面 MainActivity.java代码: package com.example.saverqq; import androidx.appcompat.app.AppCompatActivity;

  • Django项目中实现使用qq第三方登录功能

    使用qq登录的前提是已经在qq互联官网创建网站应用并获取到QQ互联中网站应用的APP ID和APP KEY 1,建路由 # qq登录 path('loginQq/',qq.loginQq,name='loginQq/'), path('returns/',qq.returns,name='returns/'), 2,前端页面写qq登录的链接,本文没有用图标,暂时使用a链接请求. <a data-wow-delay=".5s" href="/blog/loginQq/&q

  • Android Studio实现简单的QQ登录界面的示例代码

    一.项目概述 QQ是我们日常生活使用最多的软件之一,包含登录界面和进入后的聊天界面.好友列表界面和空间动态界面等.登录界面的制作比较简单,主要考验布局的使用,是实现QQ项目的第一步.现在APP开发的首要工作都是实现登录页面,所以学会了QQ登录界面对以后的软件开发有着很重要的作用. 二.开发环境 三.详细设计 1.头像设计 首先在layout文件里面选择了RelativeLayout(相对布局)作为整个页面的布局. 在顶端放置了一个ImageView控件,宽度和高度设置的都是70dp,水平居中设置

随机推荐