Android 详细的QQ第三方登录

1.注册QQ互联相关信息

1.进入官网:
在这里插入图片描述
2.创建你的app:
在这里插入图片描述

3.填写相关信息创建新的应用
在这里插入图片描述

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

5.安装包名称和安装包签名都可以通过下载QQ提供的签名工具来获取:
在这里插入图片描述

6.打开下载好的app选择你的app,点击一键复制即可:
在这里插入图片描述
7.这是复制的信息:
在这里插入图片描述
8.填写完毕,创建应用。
在这里插入图片描述

8.创建完毕等待审核通过(挺快的,大概一上午吧)
在这里插入图片描述

2.jar包引入

找到自己所需的sdk:
在这里插入图片描述

引入自己的项目:
在这里插入图片描述

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

在这里插入图片描述

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());
            }
        }
    }
}

效果图:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值