项目中免不了要使用到第三方登录 使用QQ 和微信的 数据信息来登录 那么今天来记录下 MOB的使用方法
直接上代码:
第一步:
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
// 注册MobSDK
classpath 'com.mob.sdk:MobSDK:+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
第二步: 在项目的build.gradle 中 添加一下代码
apply plugin: 'com.android.application'
apply plugin: 'com.mob.sdk'
MobSDK {
appKey "XXXXXX"
appSecret "XXXXXXXXX"
permissions {//不需要的权限可以在这里移除
exclude "android.permission.RECEIVE_SMS", "android.permission.READ_SMS", "android.permission.READ_CONTACTS", "android.permission.BLUETOOTH"
}
SMSSDK {}//没用到短信验证码,可以去掉
ShareSDK {
devInfo {
Wechat {//微信
appId "XXXXX"
appSecret "XXXXXXXXX"
}
QQ {//QQ
appId "XXXXXX"
appKey "XXXXXX"
}
}
}
}
和下面的 android {} 同层
第三部:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
MobSDK.init(this);
}
}
记得要在清单文件里添加
android:name=".MyApp"
第四部:
/*
* 第三方登录QQ
* */
public void getQQ(){
Platform plat = ShareSDK.getPlatform(QQ.NAME);
plat.removeAccount(true); //移除授权状态和本地缓存,下次授权会重新授权
plat.SSOSetting(false); //SSO授权,传false默认是客户端授权,没有客户端授权或者不支持客户端授权会跳web授权
plat.setPlatformActionListener(new PlatformActionListener() {//授权回调监听,监听oncomplete,onerror,oncancel三种状态
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
mTv.setText("登陆成功");
if(i == Platform.ACTION_AUTHORIZING)//要功能不要数据
{
//直接跳转到登陆成功的界面
Log.e("info","登陆成功");
}
else if(i == Platform.ACTION_USER_INFOR)//要数据不要功能
{
for (Map.Entry<String, Object> entry : hashMap.entrySet()) {
Log.e("info","key:"+entry.getKey()+"\tvalue:"+entry.getValue());
}
}
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Log.e("info","登陆失败");
}
@Override
public void onCancel(Platform platform, int i) {
Log.e("info","取消登陆");
}
});
if (plat.isClientValid()) {
//todo 判断是否存在授权凭条的客户端,true是有客户端,false是无
}
if (plat.isAuthValid()) {
//todo 判断是否已经存在授权状态,可以根据自己的登录逻辑设置
Toast.makeText(this, "已经授权过了", Toast.LENGTH_SHORT).show();
return;
}
//plat.authorize(); //要功能,不要数据
plat.showUser(null); //要数据不要功能,主要体现在不会重复出现授权界面
}
-------------------------------------------------------
/*
* 第三方微信登录
* */
public void getWeiXin(){
Platform plat = ShareSDK.getPlatform(Wechat.NAME);
plat.removeAccount(true); //移除授权状态和本地缓存,下次授权会重新授权
plat.SSOSetting(false); //SSO授权,传false默认是客户端授权,没有客户端授权或者不支持客户端授权会跳web授权
plat.setPlatformActionListener(new PlatformActionListener() {//授权回调监听,监听oncomplete,onerror,oncancel三种状态
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
if(i == Platform.ACTION_AUTHORIZING)//要功能不要数据
{
//直接跳转到登陆成功的界面
Log.e("info","登陆成功");
}
else if(i == Platform.ACTION_USER_INFOR)//要数据不要功能
{
for (Map.Entry<String, Object> entry : hashMap.entrySet()) {
Log.e("info","key:"+entry.getKey()+"\tvalue:"+entry.getValue());
}
}
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Log.e("info","登陆失败"); }
@Override
public void onCancel(Platform platform, int i) {
Log.e("info","登陆失败"); }
});
if (plat.isClientValid()) {
//todo 判断是否存在授权凭条的客户端,true是有客户端,false是无
}
if (plat.isAuthValid()) {
//todo 判断是否已经存在授权状态,可以根据自己的登录逻辑设置
Toast.makeText(this, "已经授权过了", Toast.LENGTH_SHORT).show();
return;
}
//plat.authorize(); //要功能,不要数据
plat.showUser(null); //要数据不要功能,主要体现在不会重复出现授权界面
}
好了 完事了 快去 CV 吧