Android 详细的QQ第三方登录

  • 1.注册QQ互联相关信息
  • 2.jar包引入
  • 3.执行你的代码

1.注册QQ互联相关信息

1.进入官网:

android qq登录页面 android qq登录流程_jar包


2.创建你的app:

android qq登录页面 android qq登录流程_android qq登录页面_02

3.填写相关信息创建新的应用

android qq登录页面 android qq登录流程_jar包_03

4.完善信息:这里需要三个东西,务必填写完!务必填写完!务必填写完! 重要的事情说三遍。

android qq登录页面 android qq登录流程_jar包_04

5.安装包名称和安装包签名都可以通过下载QQ提供的签名工具来获取:

android qq登录页面 android qq登录流程_ide_05

6.打开下载好的app选择你的app,点击一键复制即可:

android qq登录页面 android qq登录流程_android_06


7.这是复制的信息:

android qq登录页面 android qq登录流程_android qq登录页面_07


8.填写完毕,创建应用。

android qq登录页面 android qq登录流程_ide_08

8.创建完毕等待审核通过(挺快的,大概一上午吧)

android qq登录页面 android qq登录流程_ide_09

2.jar包引入

找到自己所需的sdk:

android qq登录页面 android qq登录流程_android qq登录页面_10

引入自己的项目:

android qq登录页面 android qq登录流程_ide_11

引入jar包:如果你不知道怎么引入jar包请参考这个(度娘都有):https://jingyan.baidu.com/article/e6c8503c7190b7e54f1a1893.html

android qq登录页面 android qq登录流程_ide_12

3.执行你的代码

  1. 配置AndroidManifest.xml:
    添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 添加两个Activity:不用新建这两个Activity,在jar包中已近做了封装
<!-- QQjar包中封装了 -->
        <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="这里换成你的APPID 在官网上" />
            </intent-filter>
        </activity>
        <!-- QQjar包中封装了 -->
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

3.代码:
代码里写的比较详细了,这里注意 1.在你APP审核通过了之后才能完整的使用这个功能;2.初始化Tencent的方法;3.通过按钮触发登录事件;4.一定要重写onActivityResult(),这个是登录之后拿取登录状态的方法。5.LogUtil是我自己封装的方法,你可以继续使用Log.i("","");的方法。

public class TextActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btnQQ;
    private Button btnWX;
    private Tencent mTencent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text);

        initView();
        initListener();
    }

    private void initView() {
        btnQQ = findViewById(R.id.btn_login_qq);
        btnWX = findViewById(R.id.btn_login_wx);

        initQQ();
    }

    private void initQQ() { //初始化QQ
        mTencent = Tencent.createInstance(这里是你的APPID, TextActivity.this);
    }

    private void initListener() {
        btnQQ.setOnClickListener(this);
        btnWX.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_login_qq: // QQ 登录
                if (mTencent.isQQInstalled(TextActivity.this)) { // 判断QQ是否安装了
                    goQQLogin();
                } else {
                    Toast.makeText(this, "请先安装QQ", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.btn_login_wx:
                ToastUtil.showShort(this, "功能暂未开发,敬请期待!");
                break;
        }
    }

    /**
     * 跳转QQ登录
     */
    private void goQQLogin() {
        mTencent.login(this, "all", new QQLoginCallBack());
    }

    /**
     * QQ登录之后的返回
     */
    private class QQLoginCallBack implements IUiListener {

        @Override
        public void onComplete(Object o) {
            Toast.makeText(TextActivity.this, "登录成功:", Toast.LENGTH_SHORT).show();
            LogUtil.i("QQ登录成功:" + o.toString());
        }

        @Override
        public void onError(UiError uiError) {
            Toast.makeText(TextActivity.this, "登录失败:", Toast.LENGTH_SHORT).show();
            LogUtil.i("QQ登录失败:" + uiError.toString());
        }

        @Override
        public void onCancel() {
            Toast.makeText(TextActivity.this, "取消登录", Toast.LENGTH_SHORT).show();
            LogUtil.i("QQ登录取消:");
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Tencent.onActivityResultData(requestCode, resultCode,
                data, new QQLoginCallBack());

        if (requestCode == Constants.REQUEST_API) {
            if (resultCode == Constants.REQUEST_LOGIN) {
                Tencent.handleResultData(data, new QQLoginCallBack());
            }
        }
    }
}

效果图:

android qq登录页面 android qq登录流程_android_13

android qq登录页面 android qq登录流程_ide_14

android qq登录页面 android qq登录流程_jar包_15