Android第三方QQ登录,实用教程

news/2024/12/2 23:01:46/

1.登录账号,创建应用,生成APPID与APPKEY

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.下载相关SDK

SDK下载地址:https://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
在这里插入图片描述

3.将其SDK里面相关的文件拷到自己的项目当中去

  1. 需要将 open_sdk_r6137_lite.jar包放到自己的项目当中去,并引用
    在这里插入图片描述
  2. Androidminfist.xml里面需要配置相关代码
       <activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid: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" /><!--注意,这里的222222要换成app自己的appid--><data android:scheme="tencent222222" /><!-- 100380359 100381104 222222 --></intent-filter></activity>
  1. 代码实现功能
    Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下
 lateinit var mTencent: Tencent@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 其中APP_ID是分配给第三方应用的appid,类型为String
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext())
// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取<br>
}//以下代码是唤起第三方应用QQ,并进行登录mTencent.logout(this)if (!mTencent.isSessionValid) {//进行登录操作mTencent.login(this, "all", loginListener)//进行扫码登录操作mTencent.login(this, "all", loginListener, true)}

你的AppId则要替换成具体应用的AppId,例如你的AppId是”222222″,则标签应该是这样的:

  1. 登录成功之后,进行回调操作
1.实现UIlistener()类
2.登录成功,会得到JSON数据
3.务必,将数据通过initOpenidAndToken()方法进行配置
4.调用getUserInfo()得到用户信息loginListener = object : BaseUiListener() {override fun doComplete(values: JSONObject) {initOpenidAndToken(values)getUserInfo()}}/*** 根据QQ授权登录之后,得到的token。进行配置* 1.必须进行配置,不然取不到QQ用户的一些基本信息*/fun initOpenidAndToken(jsonObject: JSONObject) {try {val token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN)val expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN)val openId = jsonObject.getString(Constants.PARAM_OPEN_ID)if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires)mTencent.openId = openId}} catch (e: Exception) {}}/*** 取用户信息*/fun getUserInfo() {val userInfo = UserInfo(this, mTencent.qqToken)userInfo.getUserInfo(object : IUiListener {override fun onComplete(response: Any?) {val type = object : TypeToken<QQUserInfoModel>() {}.typeval qqUserInfoModel = GsonUtils.fromJson<QQUserInfoModel>(response.toString(), type)}override fun onCancel() {}override fun onError(error: UiError?) {}})}private open inner class BaseUiListener : IUiListener {override fun onComplete(response: Any?) {doComplete((response as JSONObject?)!!)}protected open fun doComplete(values: JSONObject) {}override fun onError(e: UiError) {}override fun onCancel() {}}

特别注意
应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:

   override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) {//当QQ登录完成后,进行回调Tencent.onActivityResultData(requestCode, resultCode, data, loginListener)}super.onActivityResult(requestCode, resultCode, data)}
  1. 开发过程中常见的一些问题
    详情跳转: Android SDK常见问题
  2. 常用的API接口
    详情跳转 Android_SDK功能列表

http://www.ppmy.cn/news/911274.html

相关文章

2023需求最高的编程语言:Python、JavaScript和Java

科技招聘平台 CodinGame 和 CoderPad 最新发布了一份 2023 年科技行业招聘报告&#xff0c;基于对 14000 名专业人士的调查&#xff0c;对 2023 年科技行业招聘人员和求职者可能面临的情况进行了深入分析。其中一些关键亮点包括&#xff1a; 59% 的开发人员没有计算机科学方面的…

ASP.NET MVC4中使用AJAX

本实例展示在ASP.NET MVC4中如何使用AJAX。功能是实现留言的提交&#xff0c;后台程序对留言进行处理&#xff0c;然后将处理结果在前台显示。运行结果&#xff1a;主要代码&#xff1a;Views中的Create.cshtml建立留言表单&#xff1a;using (Html.BeginForm("Create&quo…

【2018.4.7】模拟赛之一-ssl2382 K好数【数位dp】

正题 大意 如果一个数每一位都小于k那么这个数是好数。给出n和k&#xff0c;求1-n里有多少个好数。 解题思路1 将起改为一个k1进制的数&#xff0c;那么每次加1后这个数都是好数。然后判断一下是否大于n&#xff08;十进制的情况下&#xff09; 解题思路2 数位dp&#xff0…

H5分享到微信好友朋友圈QQ好友QQ空间微博二维码

这是分享按钮&#xff1a; <button onclick"call()">通用分享</button> <button onclick"call(wechatFriend)">微信好友</button> <button onclick"call(wechatTimeline)">朋友圈</button> <button oncl…

NO.4 上云用户必看期刊

Hello&#xff0c;大家好&#xff0c;这是第四期 上云用户必看期刊&#xff0c;本期刊将带领大家了解IT知识&#xff0c;丰富业余生活。 先来看看有哪些值得关注的内容吧。我们下面会分为入门版和晋级版来展示。 入门版 搭建网站必不可少的知识1https://yq.aliyun.com/articles…

Pandas 对数值进行分箱操作的4种方法总结对比

来源&#xff1a;DeepHub IMBA 本文约1500字&#xff0c;建议阅读5分钟 我们将讨论使用 python Pandas 库对数值进行分箱的 4 种方法。 分箱是一种常见的数据预处理技术有时也被称为分桶或离散化&#xff0c;他可用于将连续数据的间隔分组到“箱”或“桶”中。在本文中&#xf…

【Python】使用Pandas对数值进行分箱操作的4种方法

使用Pandas对数值进行分箱操作的4种方法 方法1&#xff1a;between & loc方法2&#xff1a;cut方法3&#xff1a;qcut方法4&#xff1a;value_counts补充材料 分箱是一种常见的数据预处理技术&#xff0c;有时也被称为 分桶或 离散化&#xff0c;可用于将连续数据的间隔分…

Pandas 对数值进行分箱操作的 4 种方法

使用 Pandas 的between 、cut、qcut 和 value_count离散化数值变量。 分箱是一种常见的数据预处理技术有时也被称为分桶或离散化&#xff0c;他可用于将连续数据的间隔分组到“箱”或“桶”中。在本文中&#xff0c;我们将讨论使用 python Pandas 库对数值进行分箱的 4 种方法。…