第三方之联合登陆(qq)

前言

这一篇总结下联合登陆之QQ账号登陆

1:准备工作

1.申请APPID 2.进入QQ互联的官网 http://connect.qq.com/ 在管理中心中创建移动应用。 创建完成后,可以得到APPID。 并在下方的协作者测试号中,填写控应用测试用的QQ号码。

2:代码集成

1.将下载得到的Jar包Eclipse导入Jar包,Android studio 添加依赖库 2.在AndroidManifest.xml文件中进行注册。

  <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="tencent100546930" />
</intent-filter>
</activity>

其中,中的数字需要替换成自己申请得到的APPID。 创建登录接口 所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种: (1) IUiListener:调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口。 (2) IRequestListener:使用requestAsync、request等通用方法调用sdk未封装的接口时,例如上传图片、查看相册等。 在这里创建IUiListener接口实现相应的登录授权操作:

   private void onClickLogin() {
   if (!mTencent.isSessionValid()) {
       IUiListener listener = new IUiListener() {
        /** 授权失败的回调*/
@Override
public void onError(UiError arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授权失败", 1000).show();
Message msg = new Message();
msg.arg1 = 2;
handler.sendMessage(msg); 
}
/** 授权成功的回调*/
@Override
public void onComplete(JSONObject arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授权成功", 1000).show();
Message msg = new Message();
msg.what = 2;
msg.arg1 = 1;
msg.obj = arg0;
handler.sendMessage(msg);
}
/** 取消授权的回调*/
@Override
public void onCancel() {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "取消授权", 1000).show();
Message msg = new Message();
msg.arg1 = 3;
handler.sendMessage(msg); 
}
};
       mTencent.login(this, SCOPE, listener);
   } else {
       mTencent.logout(this);
   }
   }

其中,mTencent为QQSDK主要实现类Tencent类的实例。 // Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。 // 其中APP_ID是分配给第三方应用的appid,类型为String。

mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());

将handler进行实例化

handler = new Handler(this); 并将类实现Callback接口,即可对上述类进行Handler的处理操作。

@Override
public boolean handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.arg1) {
case 1: { // 成功
JSONObject object = (JSONObject) msg.obj;
try {
    openid = object.getString("openid").toString();
sBuilder.append("openid为:"+openid+"\n");
    access_token = object.getString("access_token").toString();
url = url + "?access_token="+access_token+"&oauth_consumer_key="+APP_ID+
"&openid="+openid+"&format=json";
new MyUrlThread(url.toString(), 2,sHandler).start();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
case 2: { // 失败
    Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
case 3: { // 取消
    Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
}
return false;
}

如果授权成功,即可得到返回的Openid。 从而,可以根据Openid调用腾讯所提供的官方接口,实现需要的操作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值