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