您的位置:首页 > 其它

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登录完成!          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: