Android开发技巧之:QQ第三方登录(一)

使用的是Android_SDK_V2.9.1,建议使用最新版;

官方下载:SDK下载

 Android studio 中添加


然后在点击build.gradle文件添加

配置AndroidManifest

在应用的AndroidManifest.xml增加配置的<application>节点下增加以下配置(注:不配置将会导致无法调用API);

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//如果测试机连的是WiFi还要加入以下权限:

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

<application>
<activity
android:name="com.tencent.tauth.AuthActivity" 
android:noHistory="true" 
android:launchMode="singleTask" >
<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="tencent你的AppId" />
</intent-filter>
</activity>
<application>

SDK_V2.0引入了AssistActivity,开发者需在androidManifest.xml中注册。代码如下:

<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize" 
/>



在.xml中:
<Button
    android:id="@+id/btn_qq_login"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_weight="1"
    android:background="@drawable/border_login"
    android:gravity="center"
    android:onClick="login"
    android:text="QQ授权登录"
    android:textColor="@color/white"
    android:textSize="20dp" />
<TextView
    android:id="@+id/tv_json"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
在MainActivity中:

private String APP_ID="xx";
private Tencent mTencent;
private TextView tvInfor;
@Overrideprotected void onCreate(Bundle savedInstanceState) {  
 super.onCreate(savedInstanceState);    
setContentView(R.layout.activity_login);   
 mTencent=Tencent.createInstance(APP_ID,LoginActivity.this);
textView= (TextView) findViewById(R.id.tv_json);
}
public void login(View view) {   
 switch (view.getId()) {        
	case R.id.btn_common_login:            
	  break;       
 	 case R.id.btn_qq_login:            
		loginForQQ();           
	   break;    }
}
private void loginForQQ() {   
 mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());   
 if (!mTencent.isSessionValid()) {       
 IUiListener iUiListener=new BaseUiListener(){          
  @Override            
  protected void doComplete(JSONObject values) {
		textView.setText(values.toString());
} };  
 mTencent.login(this, "all", iUiListener);    }}
/** * 调用SDK封装好的借口,需要传入回调的实例 会返回服务器的消息 */
private class BaseUiListener implements IUiListener {    
@Override    
public void onComplete(Object response) {        
doComplete((JSONObject) response);    }   
 /**     * 处理返回的数据,将JSONObject转成其他数据格式    
 * @param values    
 */   
 protected void doComplete(JSONObject values) {    }   
 @Override    
public void onError(UiError e) {       
 Toast.makeText(LoginActivity.this, e.toString(), Toast.LENGTH_LONG).show();    }   
 @Override    
public void onCancel() {       
 Toast.makeText(LoginActivity.this, "cancel", Toast.LENGTH_LONG).show();    }}
 
public void logout() {    mTencent.logout(this);}
@Override// 如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加//mTencent.onActivityResult(requestCode, resultCode, data);
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
   mTencent.onActivityResult(requestCode, resultCode, data);}
这样就已经实现授权登录了,只是没有将JSONObject转换成其他数据显示出来!


授权错误:

110201     未登陆
110405     登录请求被限制
110404     请求参数缺少appid
110401     请求的应用不存在
110407     应用已经下架
110406     应用没有通过审核     //没有通过审核的应用只能被授权创建应用的QQ账号登录
100044     错误的sign
110500     获取用户授权信息失败
110501     获取应用的授权信息失败
110502     设置用户授权失败
110503     获取token失败
110504     系统内部错误


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值