Android 三方登录 - QQ登录

安卓Android第三方登录-QQ登录 要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明 下面就开始详细说一说怎么实现基于这个强大开源项目的安卓第三方QQ登录吧! 准备工作:获取 AppID 打开 http://open.qq.com/ 点击应用接入 第一次需要按照说明 注册类型 ,如果是小白练... 阅读详情

由于项目需要三方登录,所以根据官方文档和一些其他资料,完成了一个Demo,这里记录一下。

(1)申请腾讯开发者账号

到腾讯开发这平台(http://open.qq.com/)注册账号,很简单的。

(2)获取应用的APP ID

主页点击“应用接入”,创建应用,要填的资料比较多,最好还是提交审核,不然,虽然可以获取到APP ID,但是当我们授权时,会失败。因为我只是做Demo,所以用的是别人的APP ID。

(3)下载SDK

到腾讯开发平台下载SDK页面(http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD)下载SDK。

(4)创建Android项目

创建Android项目,并把下载的SDK中的mta-sdk-1.6.2.jar和open_sdk_r5793.jar添加到项目中。

(5)AndroidManifest文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.johan.demo">

    <!-- 需要的权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- 添加以下2个activity -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:noHistory="true"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- 修改为自己应用的 APP ID,如果你的 APP ID 是123456,那么android:scheme="tencent123456" -->
                <data android:scheme="tencent1105602574" />
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"
            />
    </application>

</manifest>

注意

<data android:scheme="tencent1105602574" />

(5)xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context="com.johan.demo.MainActivity">

    <TextView
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="使用QQ登录"
        android:onClick="loginQQ"
        />

</LinearLayout>

(6)activity

package com.johan.demo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;

import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    // APP ID
    private static final String APP_ID = "1105602574";

    private Tencent mTencent;

    // 授权回调
    private LoginListener mListener;

    private TextView resultView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        resultView = (TextView) findViewById(R.id.result);

        // 创建Tencent
        mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
        mListener = new LoginListener();

    }

    /**
     * 登录授权回调
     */
    private class LoginListener implements IUiListener {

        @Override
        public void onComplete(Object o) {
            Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_LONG).show();
            /**
             * 授权成功
             * 返回一个json,格式如下:
             * {
                 "ret": 0,
                 "openid": "19E8D43EB75ED256CAC70C02953F188A",
                 "access_token": "65A5A933F116085E051F39CAD65084EF",
                 "pay_token": "BA387A1679483A4C8585BE268C7C4128",
                 "expires_in": 7776000,
                 "pf": "desktop_m_qq-10000144-android-2002-",
                 "pfkey": "2c7171fb052154f89e9d439e17e18c11",
                 "msg": "",
                 "login_cost": 442,
                 "query_authority_cost": 322,
                 "authority_cost": 0
             * }
             */
            JSONObject obj = (JSONObject) o;
            resultView.setText(obj.toString());
            try {
                String openID = obj.getString("openid");
                String accessToken = obj.getString("access_token");
                String expires = obj.getString("expires_in");
                // 设置授权成功返回来的信息,如openid,token等,以后就可以用mTencent获取用户信息
                mTencent.setOpenId(openID);
                mTencent.setAccessToken(accessToken, expires);
                // 获取QQ用户信息
                QQToken qqToken = mTencent.getQQToken();
                final UserInfo mUserInfo = new UserInfo(getApplicationContext(), qqToken);
                mUserInfo.getUserInfo(new IUiListener() {
                    @Override
                    public void onComplete(Object response) {
                        Log.e(getClass().getName(), "登录成功" + response.toString());
                        /**
                         * 获取用户信息的结果也是一个json,结构如下:
                         * {
                             "ret": 0,  
                             "msg": "",  
                             "is_lost": 0,  
                             "nickname": "",  
                             "gender": "",  
                             "province": "",  
                             "city": "",  
                             "figureurl": "",  
                             "figureurl_1": "",  
                             "figureurl_2": "",  
                             "figureurl_qq_1": "",  
                             "figureurl_qq_2": "",  
                             "is_yellow_vip": "0",  
                             "vip": "0",  
                             "yellow_vip_level": "0",  
                             "level": "0",  
                             "is_yellow_year_vip": "0"  
                         * }
                         */
                    }
                    @Override
                    public void onError(UiError uiError) {
                        Log.e(getClass().getName(), "登录失败"+uiError.toString());
                    }
                    @Override
                    public void onCancel() {
                        Log.e(getClass().getName(), "登录取消");
                    }
                });
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(UiError uiError) {
            Toast.makeText(MainActivity.this, "授权出错!", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(MainActivity.this, "授权取消!", Toast.LENGTH_LONG).show();
        }

    }

    public void loginQQ(View view) {
        if (!mTencent.isSessionValid()) {
            /**
             * 第一个参数为Activity
             * 第二个参数指明应用需要获得哪些API的权限,由“,”分隔。
               例如:SCOPE = “get_user_info,add_t”;所有权限用“all”
             * 第三个参数为回调
             */
            mTencent.login(MainActivity.this, "all", mListener);
        }
    }

    /**
     * 非常重要,要不然回调不了
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 交给Tencent处理
        Tencent.onActivityResultData(requestCode, resultCode, data, mListener);
    }

}

如果还想要了解详细的参数,请参考
http://wiki.open.qq.com/index.php?title=Android_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E&=45038

参考资料
Android开发实现QQ三方登录
Android-使用Android Studio实现第三方QQ登录

AndroidQQ登录接入详细介绍(kotlin搭建) 由于之前自己项目的账号系统不是非常完善,所以考虑接入QQ这个强大的第三方平台的接入,目前项目暂时使用QQ登录的接口进行前期的测试,这次从搭建到完善花了整整两天时间,不得不吐槽一下QQ互联的官方文档,从界面就可以看出了,好几年没维修了,示例代码也写的不是很清楚,翻了好多源代码和官方的demo,这个demo可以作为辅助参考,官方文档的api失效了可以从里面找相应的替代,但它的代码也太多了,一个demo 一万行代码,心累,当时把demo弄到可以运行就花了不少时间,很多api好像是失效了,笔者自己做了一些处理和完善 阅读详情

相关推荐

Unity使用官方sdk实现微信、QQ、微博三方登录(Android)

对于一个不懂安卓不会java的新手程序,实现安卓三方登录开始是 一头雾水,不知道从哪下手,通过自己摸索加上多方求助终于完成了。为了自己巩固一下以及一些像我一样的新手走弯路,把详细过程记录下来。 第一次写文章,写的有点乱,希望能帮助到大家。 我使用的是android studio2.2.2版本开发。 一、新建安卓工程并导入jar文件 注意写好自己的包名,微信登录和微博登录都要用到包名

yangxuan00的博客 2万+

Android第三方登录——QQ

Android第三方登录——QQ

m0_66689733的博客 1705

Android 实现QQ第三方登录

Android 实现QQ第三方登录 转载请加地址:http://blog.youkuaiyun.com/jing110fei/article/details/39159491 在项目中需要实现QQ第三方登录,经过一番努力算是写出来了,现在总结以下,以防以后遗忘,能帮到其他童鞋就更好了。 首先肯定是去下载SDK和DEMO http://wiki.open.qq.com/wiki/mobile/SDK下载 本文是我自己整合后的简单DEMO。 先看下效果图吧 原理:我们要使用QQ登录我们的应用,不是不用注册,是我们在后台为

随枫飘零的博客 1万+

Android QQ第三方登录详解

Android QQ第三方登录详解

Ye_Nuo的博客 1万+

android 使用qq第三方登录接口回调无反应

现在基本上是个app都可以第三方登录,比如qq,微信。通过第三方登录一方面可以优化用户的登录体验,另一方面给自己的app带来了庞大的用户基础,可见app接入第三方登录的重要性。2018-6-20日,尝试在android 中接入qq登陆,官方文档给的很详细(but,it's wrong wrong wrong!!!)一步步照着官方文档搞,经测试发现回调无反应最后在下载的sdk中找到了demo源码,兴...

qq_34568169的博客 2719

关于Android Studio第三方登录(使用QQ登录)代码

关于Android Studio第三方登录(使用QQ登录)新手上路,写的不好或者有错误之处请各位大神多多指教!!! 现在很多APP应用都实现了第三方登录:比如QQ登录、微信登录、微博登录等等。其实实现起来非常简单,那么废话就不多说了,接下来我们看看如何实现第三方登录。1.首先我们需要到腾讯开发平台区申请一个开发者的账号,申请好了后登录。点击创建应用一步步往下就会获取到:APP ID:11053458

xinyuwuhen008的博客 7228

android 开发 集成QQ登录 相关包无法导入

android 开发 集成QQ登录 相关包无法导入

T_Y_F_的博客 579

用Android Studio实现QQ登录界面

在上述代码中,我们使用了RelativeLayout作为根容器,并添加了一个ImageView用于显示QQ的logo图像,两个EditText用于输入用户名和密码,以及一个Button用于执行登录操作。在上述代码中,我们首先通过findViewById()方法获取布局文件中的控件对象,然后为登录按钮设置了一个点击事件监听器。在点击事件中,我们可以获取用户名和密码的文本内容,然后可以执行相应的登录逻辑。通过这个示例,我们可以了解到在Android开发中,如何设计界面布局,并将界面元素与代码逻辑进行绑定。

HackSquad的博客 3127

从qq for android登录,GitHub - BarefootBKK/QQLoginForAndroid: 安卓第三方登录

安卓第三方QQ登录-项目说明本项目集成封装了QQ第三方登录,大大减少了开发者编写【调用QQ登录】功能的代码量引入本项目Step 1. 添加依赖build.gradle (project)allprojects {repositories {// ...maven { url 'https://jitpack.io' }}}build.gradle (app)implementation 'com....

weixin_39673742的博客 163

安卓平台QQ第三方登录开发实战

在使用QQ开放平台API之前,开发者需要注册成为QQ开放平台的一员,并通过腾讯的审核获得相应的权限。以下是申请API接口权限的基本流程:访问QQ开放平台官网并登录。创建应用并填写必要的应用信息。在应用管理界面选择需要申请的API接口,并提交相应的权限申请。等待腾讯审核团队审批,通常需要几个工作日。审核通过后,获取应用的AppID和AppKey作为API接口访问的身份凭证。QQ开放平台提供的API还包括用户关系链、动态发布、内容分享等多种辅助接口。

weixin_42284380的博客 712

MIC卡的OFED驱动安装

 IB网络和OFED驱动安装 IB InfiniBand是一个统一的互联结构,可以处理存储I/O、网络I/O和进程间通信(IPC)。它可以将磁盘阵列、SANs、LANs、服务器和集群服务器进行互联,也可以连接外部网络(比如WAN、VPN、互联网)。设计InfiniBand的目的主要是用于企业数据中心,大型的或小型的。目标主要是实现高的可靠性、可用性、可扩展性和高的性能。Inf

beglorious的专栏 5106

android编程qq登录,Android第三方登录之腾讯QQ登录的实例代码

Android第三方登录之腾讯QQ登录的实例代码发布时间:2020-09-19 13:38:54来源:脚本之家阅读:107作者:一个终极肥屌丝布局文件android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录成功"android:textSize="25sp"android:layo...

weixin_35078410的博客 560

IGV实战指南:从数据导入到Peak可视化的全流程解析

本文提供了一份IGV实战指南,详细解析了从数据导入到Peak可视化的全流程。内容包括软件安装、参考基因组加载、测序数据处理、信号调整以及如何精准定位和可视化Peak区域,并分享了导出出版级矢量图的高级技巧,帮助用户高效完成基因组数据可视化分析。

weixin_29212867的博客 149

android第三方QQ登录授权

项目中经常用到第三方登录,今天分享下如何用QQ登录 前面的准备工作就不说了,首先下载QQ登录的jar包,这个是腾讯开放平台可以去下载

YiRanAiNi_的博客 2064

AUTOSAR/汽车行业

AUTOSAR架构及汽车产业链相关介绍

m0_54254513的博客 1万+

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5077

java qq微信微博第三方登录界面_android 实现第三方登录(微博、微信、QQ登录)

【实例简介】此案例是演示案例,大家可以看到Bmob的第三方登录和信息获取如何工作的实现了 qq、微信、微博的 第三方登录功能【实例截图】【核心代码】package com.bmob.demo.third;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import androi...

weixin_35691715的博客 562

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 222

android 第三方登入,Android第三方登录之QQ登录

本文实例为大家分享了Android第三方登录之QQ的具体代码,供大家参考,具体内容如下第三方登录之QQ代码区public class MainActivity extends AppCompatActivity {private Button btn;private TextView tv;private ImageView image;@Overrideprotected void onCrea...

weixin_34737066的博客 418

别再到处找模板了!手把手教你用Vue3+Element Plus搭建一个‘能跑起来’的管理后台原型

本文详细介绍了如何利用Vue3和Element Plus在72小时内快速搭建一个功能完整的管理后台原型。从环境准备到项目获取、依赖安装、原型定制、数据模拟以及构建优化,手把手教你打造一个可直接演示的后台系统,特别适合创业者快速验证产品逻辑。

weixin_26854555的博客 182

基于NARX和NARX-LSTM的模型辨识与MPC控制系统调试与优化

本文针对两输入单输出非线性系统,提出基于NARX和NARX-LSTM的模型辨识与MPC控制优化方案。系统输入为固定量u1和可调量u2(8.5-140),输出目标为-0.58。现有模型存在辨识精度不足、历史输出依赖过重、预测偏差等问题。解决方案包括:数据差分处理改善非平稳性、调整延迟阶数优化模型结构、引入注意力机制替代手动加权、改进损失函数消除预测偏差。MPC控制器将结合优化模型,考虑控制变量步长约束(≥2),实现输出稳定控制。通过系统性的模型调试与控制算法优化,最终形成完整的非线性系统辨识与控制框架。

huanghm88的专栏 128

Android实现QQ第三方登录

Android 实现QQ第三方登录 在项目中需要实现QQ第三方登录,经过一番努力算是写出来了,现在总结以下,以防以后遗忘,能帮到其他童鞋就更好了。 首先肯定是去下载SDK和DEMO http://wiki.open.qq.com/wiki/mobile/SDK下载 本文是我自己整合后的简单DEMO。 先看下效果图吧 原理:我们要使用QQ登录我们的应用,不

vrix的专栏 7712

Google Earth Engine 实现图像随机森林分类_遥感分类全流程详解

本文将通过一段完整的GEE代码,逐步讲解如何利用Sentinel-2影像和随机森林算法,实现地表覆盖分类。代码包含等关键步骤,适合遥感入门学习!

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 916

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.Ass...

weixin_35755434的博客 982

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: Android View - 上拉刷新下拉加载ListView
下一篇: Rxjava - 异步设计思想
JohanMan
博客等级 码龄10年 72粉丝 131原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值