本文为大家分享了调用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调用第三方登录的详细步骤和思路,希望对大家的学习有所帮助。
读取用户登陆信息 调用地址 https://secure.bilibili.tv/login 参数 字段 必选 类型 说明 api true string 申请时填入的API地址 appkey true string 申请时系统提供的Key sign true string 校验密钥 md5(“api=“) 回调 编码为UTF-8 返回值字段 字段类型 字段说明 mid int 会员编号 unam
1.如何获取APPID和APPSECRET这两个参数? 1.需登录微信开放平台配置,具体可参考使用手册。 2.申请QQ互联申请链接 2.升级以后,微信浏览底部图标不显示,应该检查哪里? 后台店铺手机端底部导航设置
本文向大家介绍Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解,包括了Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解的使用技巧和注意事项,需要的朋友参考一下 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的。为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟。这里记录一下完整的集成与使用流程。 1
本文向大家介绍用django-allauth实现第三方登录的示例代码,包括了用django-allauth实现第三方登录的示例代码的使用技巧和注意事项,需要的朋友参考一下 现在我们已经拥有一个可以进行用户本地登录的博客系统了。如果有人欣赏你的文章,说不定就会注册成为本地用户,并和你好好交流一番。 但头疼的是,用户可能每天都在互联网上浏览很多非常棒的博客,如果每个博客都要去注册才能评论,对用户是个不
本文向大家介绍Vue.js中Line第三方登录api的实现代码,包括了Vue.js中Line第三方登录api的实现代码的使用技巧和注意事项,需要的朋友参考一下 国际化的项目就会用用到一些第三方的登录api,这次记录一下Line 的! 按步骤来: 注册Line账号就不说了,虽然麻烦,这就自己去想办法了! demo 请狠狠的戳这里 http://download.lllomh.com/cliect/#
1. 申请应用 1.登录QQ互联平台 https://connect.qq.com/ 2.申请开发者 进入“应用管理”页面:https://connect.qq.com/manage.html (opens new window) 如果是第一次使用,并且未进行过开发者认证,需要提交一下个人资料,待认证通过后方可创建应用。 3. 添加应用 依次点击:应用管理 -> 网站应用 -> 创建应用,应用信息