Android 详细的QQ第三方登录
- 1.注册QQ互联相关信息
- 2.jar包引入
- 3.执行你的代码
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.执行你的代码
- 配置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" />
- 添加两个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());
}
}
}
}
效果图: