QQ快捷登录(sdk登录)

本文详细介绍了如何在Android应用中集成SDK实现QQ快捷登录,并解释了回调处理过程,包括权限配置、实例创建、登录操作及回调响应。
1.在 AndroidManifest.xml 中配置
<!-- Sdk QQ快捷登录配置 -->
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <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="tencent222222/><!-- 100380359 100381104 222222 -->
            </intent-filter>
        </activity>

2.配置访问权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3.创建实力

String SCOPE = "get_user_info,get_simple_userinfo,get_user_profile";
	private void onClickLogin() {
		if (mTencent == null) {
	        mTencent = Tencent.createInstance("1102008431", this);
	    }
		if (!mTencent.isSessionValid()) {
			Thread loginThread = new Thread(new LoginRunable());
			loginThread.start();
		} else {
		    mTencent.logout(this);
		}
	}
	
   private class LoginRunable implements Runnable {
		@Override
		public void run() {
			mTencent.login(AppLoadActivity.this, SCOPE, loginListener);
		}
	}
	
	IUiListener loginListener = new BaseUiListener() {
        @Override
        protected void doComplete(JSONObject jsonObject) {
        	try {
        		System.out.println("------eeeeeeeeeeeeeeeeee----");
        		String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
        		String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
        		String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
        		if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {
        			mTencent.setAccessToken(token, expires);
        			mTencent.setOpenId(openId);
        		}//得到openId后处理您的业务,比如对你服务器用户进行查询核对,获取qq会员的头像昵称等信息
        		//Thread checkOpenIdThread = new Thread(new CheckOpenIdRunnable());
        		//checkOpenIdThread.start();
          } catch(Exception e) {
        	  e.printStackTrace();
          }
        }
    };
4.. 实现回调

 private class BaseUiListener implements IUiListener {

		@Override
		public void onComplete(Object response) {
			doComplete((JSONObject)response);
		}
		protected void doComplete(JSONObject values) {
		}
		@Override
		public void onError(UiError e) {
		}

		@Override
		public void onCancel() {
		}
	}
	//如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码
    @Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	System.out.println("--------" + resultCode);
    	if(mTencent == null){
    		mTencent = Tencent.createInstance("222222", this);
    	}
    	 if(requestCode == Constants.REQUEST_API) {//低端机需要配置
			if(resultCode == Constants.RESULT_LOGIN) {
			    mTencent.handleLoginData(data, loginListener);
		    }
			mTencent.onActivityResult(requestCode, resultCode, data);
    	 }
	}



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值