准备工作:
http://www.mob.com/在此网址创建应用获取appKey和appSecret
如何创建请查看如何创建ShareSDK应用
添加签名文件 查看如何获取签名文件
正文:
1、配置MobSDK
在gradle.properties中,设定MobSDK为隐私协议适配版本
MobSDK.spEdition=FP
为保证您的在集成MobSDK之后,能够满足工信部相关合规要求,您应确保在App安装后首次冷启动时,在用户阅读您的《隐私政策》并取得用户授权之后,调用提交隐私协议函数MobSDK.submitPolicyGrantResult提交隐私协议。反之,如果用户不同意《隐私政策》授权,则不能调用MobSDK.submitPolicyGrantResult提交隐私协议。
注:在Application下添加以下语句:
MobSDK.submitPolicyGrantResult(true, null);
2、在settings.gradle文件下添加以下内容
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
"
//sharesdk
//https://www.mob.com/wiki/detailed?wiki=3&id=14
maven {
url "https://mvn.mob.com/android"
}
}
}
dependencyResolutionManagement {
//PREFER_SETTINGS
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
//sharesdk
//https://www.mob.com/wiki/detailed?wiki=3&id=14
maven {
url "https://mvn.mob.com/android"
}
}
}
rootProject.name = "xxx"
include ':xxx'
3、在Project级下的build.gradle添加以下内容
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
//sharesdk
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
}
}
plugins {
id 'com.android.application' version '7.4.0-alpha02' apply false
id 'com.android.library' version '7.4.0-alpha02' apply false
}
4、在Module级下的build.gradle添加以下内容
plugins {
id 'com.android.application'
//sharesdk
id 'com.mob.sdk'
}
android {
namespace 'com.wd.bind'
compileSdk 31
defaultConfig {
applicationId "com.wd.bind"
minSdk 31
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
//sharesdk配置
MobSDK {
//创建share sdk应用时获取的appKey和appSecret
appKey "换成自己的appKey"
appSecret "换成自己的appSecret"
//第三方平台配置
ShareSDK {
devInfo { // 开始配置 ShareSDK 的开发者信息
Wechat { // 配置微信开发者信息
id 4 // 微信平台的唯一标识符
sortId 1 // 在 ShareSDK 中的排序位置
appId "换成自己的微信APP ID" // 微信应用的 App ID
appSecret "换成自己的微信App Secret" // 微信应用的 App Secret
userName "" // 公众号的用户名
path "" // 小程序页面路径
bypassApproval false // 是否绕过微信审核,通常为 false
enable true // 是否启用此配置
}
QQ { // 配置QQ开发者信息
id 7 // QQ平台的唯一标识符
sortId 2 // 在 ShareSDK 中的排序位置
appId "换成自己的QQ APP ID" // QQ应用的 App ID
appKey "换成自己的QQ App Key" // QQ应用的 App Key
shareByAppClient true // 是否通过QQ客户端分享
bypassApproval false // 是否绕过QQ审核,通常为 false
enable true // 是否启用此配置
}
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
4、在你的LoginActivity添加通用登录方法
/**
* 通用第三方登录
*
* @param name
*/
public void otherLogin(String name) {
//初始化具体的平台
Platform platform = ShareSDK.getPlatform(name);
//设置false表示使用SSO授权方式
platform.SSOSetting(false);
//回调信息
//可以在这里获取基本的授权返回的信息
platform.setPlatformActionListener(new PlatformActionListener() {
/**
* 登录成功了
* @param platform
* @param i
* @param hashMap
*/
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
//登录成功了
//就可以获取到昵称,头像,OpenId
//该方法回调不是在主线程
//从数据库获取信息
PlatformDb db = platform.getDb();
data = new User();
data.setNickname(db.getUserName());
data.setIcon(db.getUserIcon());
//判断登录类型
if (Wechat.NAME.equals(name)) {
data.setWechatId(db.getUserId());
} else if (QQ.NAME.equals(name)) {
data.setQqId(db.getUserId());
}
//继续登录
binding.phoneLogin.post(() -> {
//切换到主线程
//调用登录接口
login(data);
});
}
//用户登录失败时回调
@Override
public void onError(Platform platform, int i, Throwable throwable) {
}
//用户取消登录时回调
@Override
public void onCancel(Platform platform, int i) {
}
});
//授权并获取用户信息
platform.showUser(null);
}
5、退出登录,主要是为了清除第三方登录信息:
在用户点击退出登录时调用: 示例:otherLogout(Wechat.NAME);//微信 otherLogout(QQ.NAME);//QQ
/**
* 第三方平台退出
*
* @param data:表示传入的是QQ还是W微信
*/
private void otherLogout(String data) {
//清除第三方平台登录信息
Platform platform = ShareSDK.getPlatform(data);
if (platform.isAuthValid()) {
platform.removeAccount(true);
}
}