QQ登录的简单实现
2017-09-19 17:09
120 查看
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";//官方获取的APPIDprivate 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 --><activityandroid: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"?><LinearLayoutxmlns: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"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"android:id="@+id/login"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/name"/><ImageViewandroid: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";//官方获取的APPIDprivate Tencent mTencent;private BaseUiListener mIUiListener;private UserInfo mUserInfo;private Button login;private TextView name;private ImageView img;@Overrideprotected 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() {@Overridepublic 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 {@Overridepublic 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() {@Overridepublic 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 excepta333ion}}@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();}}@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登录完成!
相关文章推荐
- ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析
- Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
- ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录
- java实现简单的QQ登录界面
- [置顶] 仿qq实现的记住密码和下拉框功能,简单易懂,还有背景炫酷的登录背景动画功能还有扫码
- 使用java实现简单QQ登录界面
- Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
- java实现简单QQ登录界面
- 使用正则表达式实现一个简单的QQ登录验证
- iOS QQ第三方登录的简单实现
- java实现简单的QQ登录界面
- 单点登录原理与简单实现
- 调用QQ/微信/新浪微博 实现登录
- springmvc web网站QQ第三方登录实现
- Android-使用Android Studio实现第三方QQ登录
- ASP.NET MVC4.0 登录、退出功能的简单实现
- 2.Struts2 核心知识(简单示例,实现登录功能)
- Java+Tomcat+MySQL实现简单的网页注册和登录
- listview简单实现侧滑删除仿QQ
- 初学java之模拟QQ聊天软件(简单实现)