内容简介:最近产品有个需求说能拿到第三方的邮箱就直接登录,拿不到再去自己平台填写邮箱注册。之前一直用的其实除了facebook拿不到邮箱以外ShareSdk跟友盟其实两个平台是差不多的。另外之前发现友盟的另外Twitter的最近包会有个崩溃的bug现在不知道修复没有,所以我觉得决定友盟换ShareSdk之后去官网看了一下,接入方式最新推荐的gradle的方式接入。但是这种方式个人
最近产品有个需求说能拿到第三方的邮箱就直接登录,拿不到再去自己平台填写邮箱注册。之前一直用的 友盟分享 发现是拿不到 facebook 平台的邮箱的只能拿到用户名等信息。但是对比其他国外的第三方登录平台发现是可以拿到邮箱的。so,这是 友盟 的问题。
ShareSdk VS 友盟
其实除了facebook拿不到邮箱以外ShareSdk跟友盟其实两个平台是差不多的。另外之前发现友盟的另外Twitter的最近包会有个崩溃的bug现在不知道修复没有,所以我觉得 友盟对国外平台的支持可能没有ShareSdk做的好
ShareSdk接入
决定友盟换ShareSdk之后去官网看了一下,接入方式最新推荐的gradle的方式接入。但是这种方式个人 不太推荐 。有两个问题
- 编译会变慢
- 有时候莫名其妙的报错,应该是资源没下载下下来。
gradle方式接入:
其实跟着官网走基本没什么大问题,只是我眼瞎,没有注意到最后的 注意事项
//引入mob插件 classpath 'com.mob.sdk:MobSDK:+' 复制代码
//在模块中引入 apply from: '../MobSDK.gradle' 复制代码
//MobSDK.gradle 文件 apply plugin: 'com.mob.sdk' MobSDK { appKey "mob申请的key" appSecret "mob申请的Secret" ShareSDK { //平台配置信息 devInfo { SinaWeibo { …… } 复制代码
注意事项
- ShareSDK默认会添加OnekeyShare库,如果您不需要这个库,可以在ShareSDK下设置“gui false”来关闭OnekeyShare
- MobSDK默认为ShareSDK提供最新版本的集成,如果您想锁定某个版本,可以在ShareSDK下设置“version “某个版本””来固定使用这个版本
- 如果使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件,或在此模块的gradle中添加
-
在组件化开发中被其它模块依赖模块都要引
apply plugin: 'com.mob.sdk'
如果编译不报错导包导不了换这一行apply from: '../MobSDK.gradle'
jar包方式引入
因为gradle引入编译实在太慢,所以后来还是换了jar包的方式。jar包集成 ShareSDK.xml
需要自己配置一下,还有需要自己定义自己在配置文件中修改一下 key
已经一些回调的 activity
。这里建议大家写成组件,方便以后直接复制就可以用。
具体代码
/** * 第三方登录 */ public void thirdPartyLogin(String typeId) { Platform platform; if (AccountPlatformType.TYPE_FACEBOOK.equals(typeId)) { platform = ShareSDK.getPlatform(Facebook.NAME); }else{ platform = ShareSDK.getPlatform(Wechat.NAME); } //回调信息,可以在这里获取基本的授权返回的信息,但是注意如果做提示和UI操作要传到主线程handler里去执行 platform.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { //提交数据到我们自己的服务器 // Set<Map.Entry<String, Object>> entries = hashMap.entrySet(); // for (Map.Entry<String, Object> entry : entries) { // AppLogUtil.e("第三方登录===》"+entry.getKey()+"----"+entry.getValue()); // } String openId; String nickName; String avatar; if (AccountPlatformType.TYPE_FACEBOOK.equals(typeId)) { //facebook openId = (String) hashMap.get("id"); nickName = (String) hashMap.get("name"); avatar = platform.getDb().getUserIcon(); } else { openId = (String) hashMap.get("unionid"); nickName = (String) hashMap.get("nickname"); avatar = (String) hashMap.get("headimgurl"); } } @Override public void onError(Platform platform, int i, Throwable throwable) { } @Override public void onCancel(Platform arg0, int i) { } }); platform.SSOSetting(false);//设置单点登录 platform.showUser(null);//执行登录,登录后在回调里面获取用户资料 } 复制代码
获取facebook的email是在hashMap里面而不是在platform里面。所以还是要打印一些才知道自己想要的信息在哪里
总结
水一篇,很久没有写过东西了。这次接第三方登录花了一点时间。其中很大的原因就是自己眼瞎没看到注意的信息,还有就是平台的key在另外一个安卓那里不是我自己申请的,其中微博分享出错找他,他一开始说key没错,结果找了半天发现原来是他看错了~
在选择一些第三方集成时开始一定要做好相关的评估,比如最近我们后台说友盟的推送测试服推送不友好想换极光,这些都是需要浪费人力浪费时间去修改的,虽然不是很难,但是在接入的时候多去论坛看看别人接入有什么坑评估一下再动手做岂不是更好吗~
以上所述就是小编给大家介绍的《Android 第三方集成选择》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- [译] 将第三方动画库集成到项目中 — 第 1 部分
- Lotus 云盘 2.1 发布,增加移动 web 端及第三方系统集成机制
- 使用node.js和oAuth2协议集成Github/LinkedIn第三方登录以OnceOA模块源码为例
- ybg-spring-fast 添加码云第三方登录,微信第三方登录
- 第三方推送服务
- 常用第三方包
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。