Android调用第三方QQ登录代码分享

本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下

1、去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下载相关的jar包,放到工程的lib目录下。

2、在Manifest.xml里注册QQ相关的Activity,代码如下

<activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <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="tencent100491239" /> </intent-filter> </activity>

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调用第三方登录的详细步骤和思路,希望对大家的学习有所帮助。

时间: 2024-09-14 14:23:08

Android调用第三方QQ登录代码分享的相关文章

Android调用第三方QQ登录代码分享_Android

本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下载相关的jar包,放到工程的lib目录下. 2.在Manifest.xml里注册QQ相关的Activity,代码如下 <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOr

Android实现第三方授权登录、分享以及获取用户资料_Android

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一个组件,目前支持如QQ.微信.新浪微博.腾讯微博.开心网.人人网.豆瓣.网易微博.搜狐微博.facebook.twitter.google+

Android实现第三方授权登录、分享以及获取用户资料

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一个组件,目前支持如QQ.微信.新浪微博.腾讯微博.开心网.人人网.豆瓣.网易微博.搜狐微博.facebook.twitter.google+

android 调用第三方apk setResult回来intent为null

问题描述 android 调用第三方apk setResult回来intent为null 有2个程序互相调用,A程序通过发intent,使用startActivityForResult()方法, 调用B程序,B程序启动后做了一些自己的事,其中会切换很多activity 显示B自己的UI, 现在我在B处理完逻辑后,通过发intent或者handler的方式把参数传回给B程序的主入口activity, 再通过此activity调用setResult()方法返回给A程序,现在发现A程序的onActiv

jQuery实现大转盘抽奖活动仿QQ音乐代码分享_jquery

jQuery实现大转盘抽奖活动仿QQ音乐抽奖特效源码是一款基于jQuery,点击大转盘开始抽奖可抽到绿钻的仿qq音乐抽奖转盘的代码. 运行效果图:---------------------------------------效果查看 源码下载-------------------------------------- 为大家分享的jQuery实现大转盘抽奖活动仿QQ音乐抽奖特效代码如下 <head> <meta http-equiv="Content-Type" co

Android调用平台功能具体技巧分享

Android操作系统那个可以通过调用手机平台来实现一些特定的功能,诸如网页的显示,邮件的发送等等.那么今天就为大家总结了几个Android调用平台功能的应用技巧,帮助大家增加编程经验. Android调用平台功能之显示网页 Uri uri = Uri.parse("http://google.com");    Intent it = new Intent(Intent.ACTION_VIEW, uri);    startActivity(it);    Uri uri = Uri

Android调用系统自带的分享功能实例代码

实现分享功能的几个办法 1.调用系统的分享功能 2.通过第三方SDK,如ShareSDK,友盟等 3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK 这里就记录下第一种办法. 分享文本信息 Intent textIntent = new Intent(Intent.ACTION_SEND); textIntent.setType("text/plain"); textIntent.putExtra(Intent.EXTRA_TEXT, "这是一段分享的文字&quo

Android实现仿QQ登录可编辑下拉菜单

在Android里,直接提供的Spinner控件虽然可以实现下拉菜单的效果,但其效果并不理想,很多时候我们需要类似手机QQ那样既可以在文本框中直接输入编辑文字,可以在下拉菜单中选中或者删除菜单选项,并且下拉菜单并不是以遮罩整个手机屏幕方式,而是以浮动在屏幕上的效果出现.下面呢,就来实现一下这些效果. 最后效果为:          此次主要以EdiText.PopupWindow.ListView及Adapter来实现这种下拉效果.具体实现步骤就不一步步详细介绍了,直接贴完整代码吧,注释比较详细

Android实现消水果游戏代码分享_Android

消水果游戏大家都玩过吧,今天小编给大家分享实现消水果游戏的代码,废话不多说了,具体代码如下所示: #include "InGameScene.h" #include "PauseLayer.h" #include "ScoreScene.h" #include "AppDelegate.h" extern "C" { void showAds() { } void hideAds() { } } using