Mob第三方登录和第三方短信验证

1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加  classpath ‘com.mob.sdk:MobSDK:+’,如下所示;

代码:

classpath 'com.mob.sdk:MobSDK:+'

2、在使用到Mob产品的module下面的build.gradle文件里面添加引用


代码:
// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
    appKey "你的appKey"
    appSecret "你的appSecret"

    //第三方短信验证
    SMSSDK {}

  //第三方登录
    ShareSDK {
        //平台配置信息
        devInfo {

            Wechat {//微信
                appId "wx4868b35061f87885"
                appSecret "64020361b8ec4c99936c0e3999a9f249"
            }
            QQ {//QQ
                appId "100371282"
                appKey "aed9b0303e3ed1e27bae87c33761161d"
            }

        }
    }

}


注:上面的红框是你的apk  察掉的也是你申请Mob的appKey

3:初始化MobSDK
  

    

注:报错:

Error:Execution failed for task ':app:processDebugManifest'.

> Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library [cn.sharesdk:ShareSDK:3.2.0] C:\Users\Think\.gradle\caches\transforms-1\files-1.1\ShareSDK-3.2.0.aar\68af81024eec4036bcb7b4da9efd826e\AndroidManifest.xml as the library might be using APIs not available in 15

如果报这个错  把Mob产品的module下面的build.gradle文件


把红框里的 改成16  就行了


代码:

/*
* 第三方登录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) {
            Iterator iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry next = (Map.Entry) iterator.next();
                Object key = next.getKey();
                Object value = next.getValue();
                Log.d("哈哈", "onComplete: "+key+"  "+value);

            }
        }

        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
            Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+"  "+"  "+platform.getId()+"  "+platform.getPlatformActionListener()+" "+platform.getVersion());
        }

        @Override
        public void onCancel(Platform platform, int i) {
            Log.d("哈哈", "onCancel: "+platform.getName());
        }
    });
    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) {
            Iterator iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry next = (Map.Entry) iterator.next();
                Object key = next.getKey();
                Object value = next.getValue();
                Log.d("哈哈", "onComplete: "+key+"  "+value);

            }
        }

        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
            Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+"  "+"  "+platform.getId()+"  "+platform.getPlatformActionListener()+" "+platform.getVersion());
        }

        @Override
        public void onCancel(Platform platform, int i) {
            Log.d("哈哈", "onCancel: "+platform.getName());
        }
    });
    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 sendCode(Context context) {
    RegisterPage page = new RegisterPage();
    //如果使用我们的ui,没有申请模板编号的情况下需传null
    page.setTempCode(null);
    page.setRegisterCallback(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // 处理成功的结果
                HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
                String country = (String) phoneMap.get("country"); // 国家代码,如“86”
                String phone = (String) phoneMap.get("phone"); // 手机号码,如“13800138000”
                // TODO 利用国家代码和手机号码进行后续的操作
            } else {
                // TODO 处理错误的结果
            }
        }
    });
    page.show(context);
}


短信验证   无视图的:

// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
public void sendCode(String country, String phone) {
    // 注册一个事件回调,用于处理发送验证码操作的结果
    SMSSDK.registerEventHandler(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // TODO 处理成功得到验证码的结果
                // 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
            } else{
                // TODO 处理错误的结果
            }

        }
    });
    // 触发操作
    SMSSDK.getVerificationCode(country, phone);
}

// 提交验证码,其中的code表示验证码,如“1357”
public void submitCode(String country, String phone, String code) {
    // 注册一个事件回调,用于处理提交验证码操作的结果
    SMSSDK.registerEventHandler(new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            if (result == SMSSDK.RESULT_COMPLETE) {
                // TODO 处理验证成功的结果
            } else{
                // TODO 处理错误的结果
            }

        }
    });
    // 触发操作
    SMSSDK.submitVerificationCode(country, phone, code);
}

protected void onDestroy() {
    super.onDestroy();
    //用完回调要注销掉,否则可能会出现内存泄露
    SMSSDK.unregisterAllEventHandler();
};


猜你喜欢

转载自blog.csdn.net/it666dhw/article/details/80698025