使用的是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 系统内部错误