shareSDK微信登录

准备工作:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值