android qq第三方登录,Android调用第三方QQ登录代码分享
本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下
1、去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下载相关的jar包,放到工程的lib目录下。
2、在Manifest.xml里注册QQ相关的Activity,代码如下
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
3、利用QQ提供的相关API去获取相关的OPENID,昵称,图像等资料。这里有一点要注意的是,由于QQ服务器返回OPENID和昵称等其他资料是分两步进行的,而首先返回的OPENID速度很快,返回昵称等其他资料可能会比较慢,所以在返回OPENID的时候,就可以认为已经调用QQ登录成功,再用异步的方式处理昵称等其他资料信息。以下是代码部 分,已经过项目测试,可直接用(替换相应的APP_ID就可以了)
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.SocketTimeoutException;
import org.apache.http.conn.ConnectTimeoutException;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import com.smart.util.BroadcastAction;
import com.smart.util.BroadcastUtil;
import com.smart.util.Constant;
import com.smart.util.ILog;
import com.smart.util.PrefUtil;
import com.smart.util.Prefkey;
import com.tencent.open.HttpStatusException;
import com.tencent.open.NetworkUnavailableException;
import com.tencent.tauth.Constants;
import com.tencent.tauth.IRequestListener;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.utils.lib.ss.common.ToastHelper;
/**
* QQ登陆。
* @author E
*/
public class QqLogin {
private static QqLogin qqLogin = null;
public static QqLogin getInstance(){
if (null == qqLogin) {
qqLogin = new QqLogin();
}
return qqLogin;
}
public void login(Activity context , QqLoginListener loginListener){
//Constant.QQ_APP_ID 这里要替换成自己申请的APP_ID
Tencent tencent = Tencent.createInstance(Constant.QQ_APP_ID, context);
if (null == tencent) {
ToastHelper.makeText(context, "error cased !");
return;
}
tencent.login(context, "get_user_info", new BaseUiListener(tencent,loginListener));
}
class BaseUiListener implements IUiListener{
Tencent tencent = null;
QqLoginListener qqLoginListener = null;
public BaseUiListener(Tencent tencent ,QqLoginListener qqLoginListener) {
super();
this.tencent = tencent;
this.qqLoginListener = qqLoginListener;
}
@Override
public void onComplete(JSONObject values) {
try {
String openid = values.getString("openid");
qqLoginListener.onLoginSuccess(openid);
tencent.requestAsync(Constants.GRAPH_SIMPLE_USER_INFO, null, Constants.HTTP_GET,
new BaseApiListener(qqLoginListener) ,null);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError arg0) {
qqLoginListener.onLoginFail();
}
@Override
public void onCancel() {
qqLoginListener.onCancel();
}
}
class BaseApiListener implements IRequestListener{
QqLoginListener qqLoginListener = null;
public BaseApiListener(QqLoginListener qqLoginListener) {
super();
this.qqLoginListener = qqLoginListener;
}
@Override
public void onComplete(JSONObject jsonObject, Object object) {
try {
ILog.e(jsonObject.toString());
String nickName = jsonObject.getString("nickname");
String figureurl_qq_1 = jsonObject.getString("figureurl_qq_2");
PrefUtil.instance().setPref(Prefkey.THIRD_NICKNAME, nickName);
PrefUtil.instance().setPref(Prefkey.THIRD_IMAGE, figureurl_qq_1);
//发送广播到主页去更新
BroadcastUtil.sendBroadcast(BroadcastAction.UPLOAD_THIRD_INFO);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onConnectTimeoutException(ConnectTimeoutException arg0,
Object arg1) {
}
@Override
public void onHttpStatusException(HttpStatusException arg0, Object arg1) {
}
@Override
public void onIOException(IOException arg0, Object arg1) {
}
@Override
public void onJSONException(JSONException arg0, Object arg1) {
}
@Override
public void onMalformedURLException(MalformedURLException arg0,
Object arg1) {
}
@Override
public void onNetworkUnavailableException(
NetworkUnavailableException arg0, Object arg1) {
}
@Override
public void onSocketTimeoutException(SocketTimeoutException arg0,
Object arg1) {
}
@Override
public void onUnknowException(Exception arg0, Object arg1) {
}
}
/**
* 授权完成后,执行一下步的回调
*/
public static abstract class QqLoginListener{
public void onLoginSuccess(String openid){};
public void onLoginSuccess(String openid, String nickname){};
public void onLoginFail(){};
public void onCancel(){};
}
好了,到里代码部分已经写完,只需要调用login(Activity context , QqLoginListener loginListener)方法就可以了。
以上就是Android调用第三方登录的详细步骤和思路,希望对大家的学习有所帮助。
android qq第三方登录,Android调用第三方QQ登录代码分享相关推荐
- 网站请勿随意使用第三方CDN资源调用公开库资源 - 聆听分享网
网站请勿随意使用第三方CDN资源调用公开库资源 - 聆听分享网 网站请勿随意使用第三方CDN资源调用公开库资源 - 聆听分享网 posted on 2017-02-20 13:35 lexus 阅读( ...
- QQ,群,空间等API接口代码分享
http://q2.qlogo.cn/headimg_dl?dst_uin=QQ号&spec=100 QQ网名 http://users.qzone.qq.com/fcg-bin/cgi_ge ...
- php 手机端唤起qq,通过手机浏览器调用客户端QQ
可调用ios android QQ客户端,指定聊天QQ号,js代码 function qqcao(){ var type = undefined; var param = ""; ...
- java异步调用第三方接口_Java调用第三方系统接口获取数据
1,调取接口代码 RestTemplate restTemplate=new RestTemplate();HttpHeaders headers=new HttpHeaders();MultiVal ...
- java调用第三方接口_java调用第三方接口,获取接口返回的数据。
java接收远程调用的数据,得到的是如上个数的返回内容,我怎么写才能获取到值,现在使用的请求方法如下: public static HttpResult postJsonData(String url ...
- 【H5+来实现】uni-app框架如何跳转到第三方url或调用第三方APP
参考:http://ask.dcloud.net.cn/article/35621 H5+官网参考:http://www.html5plus.org/doc/zh_cn/runtime.html#pl ...
- python复制文件的代码_python调用cmd复制文件代码分享
import os def load() : filename = os.getcwd() + r'\fromto.txt' if os.path.isfile(filename) : f = ope ...
- C# 封装对第三方接口的调用
引言 在日常开发中经常会对接第三方接口,所以经常需要封装第三方接口,方便在程序中使用,本文主要是封装JSON格式的HTTP第三方接口,将入参和出参都从json对象转化为class ,方便调用. 实现思 ...
- Android中的友盟(微信、QQ、新浪)第三方登录分享
前言:我再这里只总结Android开发人员需要做的,其他的就去看开发文档吧,例如获取Appkey,就找你的领导要去吧. 一.准备工作 第一步:快速集成. 快速集成包含自动集成与手动集成两种方式,开发者 ...
最新文章
- Mozilla两款火狐插件包含恶意代码被紧急喊停
- PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.5. 测试覆盖检查
- bgi::detail::is_valid用法的测试程序
- 如何查看eas源代码_MT5CTP扩展:MT4源代码(EA)适配器来了
- 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
- 状态管理工具vuex的基本使用(vuebus的理解)
- 深层神经网络——总结
- 漫画 | 如果面试时大家都说真话…
- springboot testcontext @sql_SpringBoot图文教程11—从此不写mapper文件「集成MybatisPlus」...
- 原生开发什么意思_成都APP开发:原生APP开发与Web APP开发有什么区别呢?
- 基于GAN的手写数字生成实践
- 多线程之CountDownLatch工具类
- 微信红包架构设计,高并发系统应用实战
- matlab freqz2 逆变化,【matlab】freqz函数的使用(二)
- PPT中如何制作遮罩动画效果
- [cnblogs镜像]苹果操作系统名称演变史 新名称macOS
- Drug Discov. Today | 药物发现中的先进机器学习技术
- [php]php设计模式 (总结)
- html文本框怎么加粗,html怎么让字体加粗
- DBA职业规划技术成长路线