您的位置:首页 > 移动开发 > Android开发

QQ第三方登录

2015-10-24 18:05 357 查看
不罗嗦,Android第三方APP想用QQ账号注册,从而达到登录的目的。这里贴出实现的过程及代码。步骤:
第一步:首先要到腾讯开放平台注册,获取开发者身份,然后创建移动应用获得APP_ID。[腾讯开放平台](http://open.qq.com/)
第二步:当你注册完成以后,你就可以下载他的Demo和SDK了(当然不注册也可以下载),愿意看他的demo的可以看,我这里给出我的代码(我们公司用的不是纯生态的Android,UI界面是用的web做的,我做的只是接口,不过原理都是一样的)
`// 获取Tencent实例,我们就是利用这个实例的login方法来出发登录事件
String APP_ID = "XXXXXXXX"; // 自己申请的APP_ID
Tencent mTencent = Tencent.createInstance(APP_ID, activity);
mTencent.login(activity, "all", new BaseUiListener());`
这里,我们调用的mTencent.login(arg0, arg1, arg2)方法,参数解释如下:
参数一:Activity对象。不能是Context对象,因为跳转到腾讯的activity,在SDK里面
参数二:是获取的权限,避免麻烦,统一获取所有权限"all"
参数三:要实现它这个借口IUiListener,具体实现的代码:
private class BaseUiListener implements IUiListener {

// 登录成功
@Override
public void onComplete(Object response) {
QQToken qqToken = mTencent.getQQToken();
final String accessToken = qqToken.getAccessToken();
final String openId = qqToken.getOpenId();
// 获取用户信息
UserInfo info = new UserInfo(activity, qqToken);
info.getUserInfo(new IUiListener() {

@Override
public void onComplete(Object response) {
JSONObject responseJsonobject = (JSONObject) response;
try {
String nickname = responseJsonobject.getString("nickname");
String imageUrl = responseJsonobject
.getString("figureurl_qq_2");
String gender = responseJsonobject.getString("gender");
String result = "{'nickname':'" + nickname + "','imageUrl':'"
+ imageUrl + "','gender':'" + gender
+ "','accessToken':'" + accessToken + "','openId':'"
+ openId + "'}";
String message = "javascript:getQQresult('" + result
+ "')";
System.out.println(result);
Message handleMsg = handler.obtainMessage(
Constant.EXE_JS, message);
handler.sendMessage(handleMsg);
} catch (JSONException e) {
Toast.makeText(context, "登录失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}

@Override
public void onError(UiError arg0) {
Toast.makeText(context, "登录失败",Toast.LENGTH_SHORT).show();
}

@Override
public void onCancel() {
Toast.makeText(context, "取消登录",Toast.LENGTH_SHORT).show();
}
});
}

// 登录取消
@Override
public void onCancel() {
Toast.makeText(context, "登录失败",Toast.LENGTH_SHORT).show();
}

// 登录失败
@Override
public void onError(UiError arg0) {
Toast.makeText(context, "取消登录",Toast.LENGTH_SHORT).show();
}

}
一般的第三方登录都是获取用户的信息,openid和accesstoken。其中openid跟accesstoken在上面代码里面给出了。
这里有两个嵌套实现接口,在第二个接口onComplete(Object response)方法的参数就是用户信息,我们这里把Object对象转换成JSON对象,然后通过JSON的get方法就可以获取到用户信息了。
第三步:用户权限,你下载SDK的时候一定下载了Demo,你可以在Demo里面考过去就可以了
经过上面三步,QQ第三方登录与获取用户信息就实现了,就是这么简单,后面还会给出其他第三方登录的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息