友盟集成了第三方登录,本给我们带来便利,但是文档只描述了集成方式,出现问题,发现还得自己各种baidu,这里总结自己遇到的一些坑,以防下次再踩。
友盟集成第三方微信登录:
友盟集成方案参考:http://dev.umeng.com/social/android/login-page#1
前期工作:微信账号开通开发者账号权限,在https://open.weixin.qq.com/上创建自己应用,获取到AppId和AppSecret。

1. 实现步骤

1.1 前期准备

将umeng_social_tool.jar, umeng_social_net.jar, umeng_social_api.jar三个jar包copy到工程的libs目录下。
在应用中添加权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_LOGS"/><uses-permission android:name="android.permission.CALL_PHONE"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

1.2 平台配置,一般建议放在全局Application或者程序入口

{PlatformConfig.setWeixin(AppConstant.WEIXIN_APPID, AppConstant.WEIXIN_APPSECRET);
PlatformConfig.setQQZone(AppConstant.QQ_APPID, AppConstant.QQ_KEY);}

1.3 在应用包名.wxapi路径下建立WXEntryActivity类,并在AndroidMainfest.xml中注册

public class WXEntryActivity extends WXCallbackActivity {}

AndroidMainfest.xml中注册,记得android:exported设置为”true”,我就是在这吃个亏,设置成false,结果在呼起微信端登录时,点击登录,不会回调WXEntryActivity,原因应该是微信第三方登录的进程和我们应用的进程不是同一个进程。

<!--微信-->
<activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"/><!-- tencent,记得scheme后面的数字改成自己的appId --><activityandroid:name="com.umeng.qq.tencent.AuthActivity"android:launchMode="singleTask"android:noHistory="true"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.BROWSABLE"/><data android:scheme="tencent100424468"/></intent-filter></activity><activityandroid:name="com.umeng.qq.tencent.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

1.4 第三方登录实现

platform中传入的SHARE_MEDIA.WEIXIN

private void loginByThree(SHARE_MEDIA platform) {UMShareAPI.get(this).doOauthVerify(this, platform, authListener);}/*** 第三方登录授权*/UMAuthListener authListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA platform) {LoadingDialog.showDialogForLoading(LoginActivity.this, getString(R.string.auth), true);}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {LoadingDialog.cancelDialogForLoading();if (platform == SHARE_MEDIA.WEIXIN) {threeUserId = data.get("unionid");} else {threeUserId = data.get("uid");}access_token = data.get("access_token");UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, platform, getInfoAuthListener);}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {showShortToast("失败:" + t.getMessage());LoadingDialog.cancelDialogForLoading();}@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {showShortToast("取消了");LoadingDialog.cancelDialogForLoading();}};UMAuthListener getInfoAuthListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA platform) {}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {String temp = "";for (String key : data.keySet()) {temp = temp + key + " : " + data.get(key) + "\n";}threeUserId = data.get("uid");loginToServer();}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {showShortToast("错误" + t.getMessage());}@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {showShortToast("取消" );}};@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);}

2. 遇到的坑

2.1 点击微信登录时,没有进入微信第三方页面

需要在微信平台上,将应用的包名和签名填入,并缴纳开放登录权限的费用(300元),注意如果放的relaese签名,在呼起WXEntryActivity应该是relase后的包。
或者你WXEntryActivity放置的位置不对,一定要在包名.wxapi路径下

2.2 点击微信登录后,没有回调WXEntryActivity和UMAuthListener

这可能是因为WXEntryActivity在AndroidMainfest.xml中注册时,android:exported没有设置成true

2.3 微信登录获取accessToken

在UMAuthListener authListener 的onComplete回调中

 @Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {String access_token = data.get("access_token");UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, platform, getInfoAuthListener);}

2.4 QQ应用非官方正版应用,请去应用宝下载正版后进行QQ登录(错误码:100044)

其实并不是咱们的应用没有在应用宝上传或是正版,因为我发现在应用中换成友盟的QQ的appid和appkey就行,但是换成自己应用的就不行,会出下面的错误

而换成能呼起下面的页面

至于这个问题,还没有找到原因,我觉得是我们注册的应用的问题。

友盟集成第三方登录--微信、QQ实现相关推荐

  1. 网站集成第三方登录-微信登录

    网站集成第三方登录-微信登录 课程介绍 1. 第三方登录引入介绍; 2. 网站微信登录原理(重点);oauth2 3. 网站微信登录具体步骤(重点); 4. 常见疑问解答; 5. 功能实现 ...

  2. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  3. iOS:友盟SDK第三方登录 分享及友盟统计的使用

    本文转载至 http://www.it165.net/pro/html/201503/37101.html Tag标签:第三方   view sourceprint? 01.#import " ...

  4. 友盟集成第三方分享和登录

    需要依赖 implementation files('libs/open_sdk_r5788_lite.jar') implementation files('libs/SocialSDK_QQ_Fu ...

  5. 友推集成第三方登录和分享的步骤

    1.进入友推官网http://youtui.mobi/user/reg注册并申请应用key 2.申请微信平台appkey:https://open.weixin.qq.com/ 3.引入友推项目库(下 ...

  6. 使用友盟集成第三方分享和登陆支付

    2019独角兽企业重金招聘Python工程师标准>>> iOS9适配 1.1 https 和http 1.2 sso 白名单 1.3 app thining bitcode no u ...

  7. SpringBoot 集成第三方登录(微信、支付宝)

    SpringBoot 集成第三方登录 微信 1. 登录微信开发平台 1.在微信开发平台里面获取我们需要的AppID.AppSecret . 2.创建配置类 3. 开始自己的业务模块 1. 方便测试 支 ...

  8. Android友盟集成QQ、微信、微博等第三方登录与分享

    前言 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的.为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟.这里记录一下完整的集成与使用流程 ...

  9. Android 项目必备(三十七)-->使用友盟集成 QQ、微信、微博等第三方分享与登录

    文章目录 效果图 实战 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的.为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟. 效果图 实战 ...

最新文章

  1. 第1关:实现一个顺序存储的队列
  2. C 语言编程 — 数据类型转换
  3. 动态实例分割SOLOv2,更快更强更精准!
  4. Notepad++插件Base64编解码
  5. 类似mysqlhotcopy备份mysql myisam脚本
  6. 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???
  7. CVPR2017精彩论文解读:用于生物医学图像分析的精细调节卷积神经网络
  8. python 三次样条_python实现三次样条插值
  9. Dos命令查看wifi密码
  10. 10 款富有创意的博客名片设计
  11. Windbg调试命令详解(2)
  12. 锐捷NBR路由器命令执行漏洞复现
  13. vue3使用watch失效的一个原因
  14. 面对电车难题,自动驾驶会怎么选?
  15. 汽车以太网芯片IP的功能安全验证和优化
  16. 多点触摸:MultiPointTouchArea
  17. day06数组-一维数组二维数组
  18. 微软允许永久在家办公后,发现微软像极了“微商”!
  19. 热修复系列——Android热修复技术进阶篇
  20. 怎么使用ArcMap进行洪水淹没分析

热门文章

  1. 2019春运大幕开启:全国铁路已售春运车票3.83亿张
  2. 基因数据处理70之Picard安装没成功
  3. MusicBrainz Picard for Mac(跨平台音乐标记器)
  4. 逻辑延时环节(DLD)
  5. laui中使用filed填充表格数据时隐藏表格中某一列filed不显示
  6. 5.1.2全景声音箱摆位_JBL发布声道全景声回音壁音箱,采用5.1.2声道的配置
  7. HIPAA Program Reference Handbook
  8. 用python的turtle画笑脸_python 学习笔记——学会用turtle画笑脸
  9. SOMEIP环境搭建以及Demo详细介绍
  10. SWARD Camera Calibration Toolbox