原
Mob第三方登录和第三方短信验证
2018年06月09日 11:02:44
阅读数:150
1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示;
2、在使用到Mob产品的module下面的build.gradle文件里面添加引用
注:上面的红框是你的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 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 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 phoneMap = (HashMap) 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();
};
(".MathJax").remove();
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: { automatic: true, width: "94%container" },
imageFont: null
},
tex2jax: {
preview: "none"
},
mml2jax: {
preview: 'none'
}
});
(function(){
var btnReadmore = (".MathJax").remove(); MathJax.Hub.Config({ "HTML-CSS": { linebreaks: { automatic: true, width: "94%container" }, imageFont: null }, tex2jax: { preview: "none" }, mml2jax: { preview: 'none' } }); (function(){ var btnReadmore = ("#btn-readmore"); if(btnReadmore.length>0){ var winH =
(window).height();vararticleBox= ( w i n d o w ) . h e i g h t ( ) ; v a r a r t i c l e B o x = ("div.article_content"); var artH = articleBox.height(); if(artH > winH*2){ articleBox.css({ 'height':winH*2+'px', 'overflow':'hidden' }) btnReadmore.click(function(){ articleBox.removeAttr("style"); $(this).parent().remove(); }) }else{ btnReadmore.parent().remove(); } } })()
var edu_ad_is_big_data = 0; var edu_ad_id_mapping = {"0":["https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1"],"1":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=web1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"8":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"2":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1"],"3":["https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"6":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"12":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"14":["https:\/\/edu.csdn.net\/sp\/blog.php?type=web1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcweb"],"15":["https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcjg"],"16":["https:\/\/edu.csdn.net\/sp\/blog.php?type=web1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1"],"28":["https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcai"],"29":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1"],"30":["https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1"],"32":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcaq"],"33":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gccxrs"],"35":["https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"37":["https:\/\/edu.csdn.net\/sp\/blog.php?type=web1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1"],"7":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=web1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"17":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1"],"34":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcbt"],"36":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=ai1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"31":["https:\/\/edu.csdn.net\/sp\/blog.php?type=python1","https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"19":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"],"20":["https:\/\/edu.csdn.net\/sp\/blog.php?type=bigdata1","https:\/\/edu.csdn.net\/sp\/blog.php?type=gcit"]};
ios利用短信SKD实现短信验证(使用mob网站提供的免费接口)
我做这个接口的时候。使用的软件是XCODE6.1版本的,为什么要说一下这个呢,因为我之前使用这个接口的时候出现了一个问题,也是我调试了很久的问题、就是使用IOS8.1、iphone5s的模拟器。出现了…
Lyeahui
2016-10-05 20:35:15
阅读数:599
关于mob第三方登录的坑——微信篇
第一次用mob继承android的第三方登录,就踩到了个大坑,我是应该高兴还是高兴。首先说说集成步骤:1、准备工作:拷贝各种jar包到libs文件夹下面,拷贝ShareSDK.xml文件到assert…
silence_jjj
2017-06-29 17:07:47
阅读数:1375
新政策:50岁以上中老年福利:参加口福计划!免费种牙!免费! 北京京一口腔 · 顶新
var width = $("div.recommend-box").outerWidth() - 48; NEWS_FEED({ w: width, h : 90, showid : 'GNKXx7', placeholderId: "ad1", inject : 'define', define : { imagePosition : 'right', imageBorderRadius : 0, imageWidth: 120, imageHeight: 90, imageFill : 'clip', displayImage : true, displayTitle : true, titleFontSize: 20, titleFontColor: '#333', titleFontFamily : 'Microsoft Yahei', titleFontWeight: 'bold', titlePaddingTop : 0, titlePaddingRight : 0, titlePaddingBottom : 10, titlePaddingLeft : 0, displayDesc : true, descFontSize: 14, descFontColor: '#6b6b6b', descFontFamily : 'Microsoft Yahei', paddingTop : 0, paddingRight : 0, paddingBottom : 0, paddingLeft : 0, backgroundColor: '#fff', hoverColor: '#ca0c16' } })
iOS Mob短信验证码
第一步 下载最新版Mob短信sdk,解压后得到以下文件结构:
1、SMSSDK:短信验证码SDK,包括静态库和本地化文件。使用时直接将这个文件夹拖入工程。
2、SMSSDKDemo:Mob自带…
lizh13ao
2016-01-22 14:09:26
阅读数:379
用shareSdk实现的第三方登录与分享
版权声明:本文为博主原创文章,未经博主允许不得转载。说到第三方登录与分享,其实有很多sdk都支持,不过最常用的还算友盟和mob了,我今天打算记录一下sharesdk的第三方登录与分享,其实也就是简单实…
zr940326
2016-06-21 22:20:43
阅读数:2730
Android studio Mob第三方登录快速集成开发
Android studio Mob第三方登录快速集成开发,最快捷最详细
qq_32120667
2017-07-04 09:57:20
阅读数:1005
https://s3m.mediav.com/galileo/554796-01183ed53512fd98ce5b95f5be189b80.jpg)”>
体内湿气重危害大,这样做,1周体内湿气没有了,点击了解详情
百姓 · 顶新
var width = $("div.recommend-box").outerWidth() - 48;
NEWS_FEED({
w: width,
h: 90,
showid: 'Afihld',
placeholderId: 'a_d_feed_0',
inject: 'define',
define: {
imagePosition: 'right',
imageBorderRadius: 0,
imageWidth: 120,
imageHeight: 90,
imageFill: 'clip',
displayImage: true,
displayTitle: true,
titleFontSize: 20,
titleFontColor: '#333',
titleFontFamily: 'Microsoft Yahei',
titleFontWeight: 'bold',
titlePaddingTop: 0,
titlePaddingRight: 0,
titlePaddingBottom: 10,
titlePaddingLeft: 0,
displayDesc: true,
descFontSize: 14,
descFontColor: '#6b6b6b',
descFontFamily: 'Microsoft Yahei',
paddingTop: 0,
paddingRight: 0,
paddingBottom: 0,
paddingLeft: 0,
backgroundColor: '#fff',
hoverColor: '#ca0c16'
}
})
Android Studio Mob快速集成短信验证
2017年01月12日
26.78MB
下载
第三方短信验证
这个是我基于eclipse写的一个ShareSDK的短信验证不说太多直接上代码了,里面的注释清晰 这是Activityimport java.io.ByteArrayOutputStream;
imp…
qq_32519693
2016-10-20 18:18:15
阅读数:950
Mob第三方短信验证SDK
2016年10月01日
1.44MB
下载
基于mob短信验证的账号注册demo
////////////////////2016/05/14////////////////////////
/////////////////////by xbw//////////////////…
xbw12138
2016-05-14 13:31:43
阅读数:22249
Android-使用Mob短信验证码SDK完成短信验证功能
1.之所以选择Mob短信验证码SDK,是因为它是完全免费的,所以很适合自己平时测试或者在个人的小项目中使用。
2.首先打开Mob官网:http://www.mob.com/#/ ,下载SDK
…
jc_0203
2016-04-13 18:48:55
阅读数:2804
使用ShareSDK进行第三方(登录,分享)
最近项目需要做第三方登录和分享,我刚开始接触的时候花了 一些时间才搞清楚 ,我使用的是ShareSDK 我把它整理下来,希望能帮助他人,如果写的不好,请见谅1.去Mob官网注册一个帐号(注册步骤省略了…
qq_28142539
2016-03-13 22:21:14
阅读数:13023
第三方QQ登录与分享
本文主要介绍如何实现第三方QQ登录与分享
一、首先要在腾讯开发者平台(点击链接跳转)注册成为开发者,集成他们的SDK。
创建应用之后你就可以拿到你的ID和KEY了
然后我们下载他的JAR包(地…
zhangzibin1992
2017-03-16 11:22:58
阅读数:698
scrolling="no">
安卓短信验证功能实现 (引用MOB SDK)
安卓短信验证功能实现 (引用MOB SDK)
qq_26071477
2016-11-03 23:43:08
阅读数:2642
ShareSDK 分享和第三方登录实现
一、前面部分引用官方文档,按步骤添加ShareSDK到自己的项目中
- 获取ShareSDK的AppKey
申请ShareSDK的appkey的流程
2….
gaobaoshen1
2016-06-17 14:37:21
阅读数:7598
ShareSDK for Android > 第三方登录 > 授权与取消授权
4、SSO (Single Sign-On)SSO授权方式,简单来说就是使用目标平台客户端来完成授权。Platform weibo = ShareSDK.getPlatform(SinaWeibo.N…
libeyond_
2016-03-08 09:21:38
阅读数:1970
Mob实现短信验证-免费的哦
使用2.0.0版本请注意:1,2.0.0版本的appkey与旧版本不共用,需重新申请。2,测试期间短信条数限制:20条/天,APP开发完成后务必提交到mob.com后台审核,开通完全免费短信。3、2….
JerryWu145
2016-09-08 23:57:51
阅读数:4557
Android之Mob短信验证简单使用
前言
前几天刚刚集成了短信验证的功能,看了下官网的api使用,觉得不够简单易用,于是就自己封装到一个SimpleMobSMS类中,方便下次使用一行代码即可,
1.发送验证码
/**
…
a708959817
2017-09-29 09:21:12
阅读数:188
Mob- 短信验证使用
获取密钥1登录mob,然后进入后台
2 进入SecurityCodeSDK
3 添加应用
4 应用创建成功后 就可获取到app key和app secret(程序中初始化短信SDK时…
u014290221
2016-05-15 10:03:05
阅读数:2316
Mob有界面短信验证Demo
2016年10月02日
30.47MB
下载