安卓Android第三方登录-QQ登录

要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager

几乎 三行代码 就实现QQ登录功能

这里先给出Github开源项目地址,项目下有详细的使用说明

 

下面就开始详细说一说怎么实现基于这个强大开源项目的安卓第三方QQ登录吧!

准备工作:获取 AppID

打开 http://open.qq.com/

点击应用接入

安卓Android第三方登录-QQ登录_第1张图片

第一次需要按照说明 注册类型 ,如果是小白练手,推荐选择个人

通过步骤完成注册(可能需要实名认证,一般审核需要12个小时)

在管理中心创建应用

选择创建的类型

注意:到这里如果只是单纯的个人测试用,只需要填写一下应用名称、选一下应用类型,然后点击【保存】就可以了,并不需要真的发布到应用宝上,之后AppId就可以用了

再注意一下:一个AppID只能在一个应用上使用,如果另一个项目也需要使用QQ登录,需要在管理中心新建一个应用

 

到了这里就可以进行开发工作了,由于本篇博客主要内容为通过一个集成封装类实现安卓的QQ第三方登录,所以原生的QQ登录、从头到尾的写法就不赘述了

 

引入开源项目(GitHub开源项目:点这里    下载地址:点这里)

 

Step 1. 引入SDK JAR包

下载Jar包

你可以点击这里下载 腾讯官方QQ-SDK-JAR 包 (下载完成后只需要解压出里面 libs 文件夹里的 jar文件 即可)

也可以直接使用GitHub项目里 qq_sdk_jar文件夹 里的 jar包 (点击直接下载)(这个jar包为腾讯官方于为2018年5月更新的版本,你也可以点击这里查看 最新官方SDK包版本 )

在项目里引入Jar包

这里给出一种引入Jar包的方法(其他方法也可以)

Android Studio为例:

将下载好的jar包放到你的安卓项目的 app\libs 文件夹下

Android Studio 中点击 File->Project Structure,然后选择 app->Dependencies,这时候点击右上角的 + 号,选择 Jar dependency,然后选择上一步 libs 文件夹里的 jar包 添加即可

 

Step 2. 修改AndroidManifest文件

(1) 将下列代码复制到 AndroidManifest.xml 文件的 (注意将代码里的app_id完善)

  
      
          

          
          
          
          
      
  
  
  

(2) 添加网络权限



 

Step 3. 引入QQLoginManager.java文件

下载GitHub项目的 QQLoginManager.java 文件,将其复制到自己的安卓项目中

 

Step 4. 代码示例

按照下列示例代码,模仿其添加到自己的Activity类中,之后你就可以在需要的地方(如点击某个按钮后)调用函数:launchQQLogin() (如:qqLoginManager.launchQQLogin()),即可唤起QQ登录

public class MainActivity extends AppCompatActivity implements QQLoginManager.QQLoginListener {

    private QQLoginManager qqLoginManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 实例化QQLoginManager, 传入你的app_id
        qqLoginManager = new QQLoginManager("app_id", this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        // 回调
        qqLoginManager.onActivityResultData(requestCode, resultCode, data);
    }

    @Override
    public void onQQLoginSuccess(JSONObject jsonObject) {
        // 登录成功
    }

    @Override
    public void onQQLoginCancel() {
        // 登录取消
    }

    @Override
    public void onQQLoginError(UiError uiError) {
        // 登录出错
    }
}

 

补充说明(函数onQQLoginSuccess:JSONObject里QQ用户信息字段格式)

{
  "open_id":当前登录QQ唯一标识,
  "nickname":昵称,
  "gender":性别,
  "province":所在省份,
  "city":所在城市,
  "year":出生年,
  "constellation":星座,
  "figureurl":30X30的头像URL,
  "figureurl_1":50X50的头像URL,
  "figureurl_2":100X100的头像URL,
  "figureurl_qq_1":40X40的头像URL,
  "figureurl_qq_2":100X100的头像URL,
  "vip":是否为qq会员,
  "level":qq会员等级,
  "is_yellow_vip":是否为黄钻,
  "yellow_vip_level":黄钻等级,
  "is_yellow_year_vip":是否为黄钻年会员
}

 

函数onQQLoginError:UiError类参数详情

int errorCode: 错误码,具体错误码请参考腾讯官方API文档
String errorDetail: 错误详情
String errorMessage: 错误信息


====== 2019/03/12 更新 ======

目前新增了快速获取openId, accessToken, expiresIn的方法,对于有需要第三方平台注册登录的小伙伴应该有帮助吧......

 

你可能感兴趣的:(Android)