一、简单介绍

因为一个平台一个平台进行弄太麻烦,也不够统一,所以领导选择了umeng(我的内心是拒绝的),umeng的文档写的便于查找,但是比较分散,对于比较熟悉的很好用,没接触过umeng的肯定一脸懵逼,比如我,所以,我整理一篇,以后也好用到。
本文以6.4.5版本更新。
二、申请appkey

如果你已经申请了,请跳过1-6看下面的。
大部分平台进行分享、登录操作需要(zhuangbi)在第三方平台创建应用并提交审核,创建应用后,分享、登录操作时显示的应用icon、名称和对应开放平台设置有关,必须要创建应用的平台为:微信、新浪、QQ、Facebook、Kakao、LinkeIn、Twitter、钉钉.
根据自己需要进行申请平台账号。
1、新浪微博
登录新浪微博开放平台(http://open.weibo.com/),填写相关应用信息并上传icon图片。
就能获取到AppID及AppSecret。

ps:新浪和其他平台不同的是多一个授权回调页。

授权回调页的作用是成功授权之后会回调这个地址,把信息传给这个地址,可以随便设置一个,建议自家域名。

2、微信开放平台

登录微信开放平台(https://open.weixin.qq.com/),填写相关应用信息,审核通过后获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限,注意微信登录有效期为一年,需要按时在微信平台认证
注意应用包名、签名设置必须和打包后的apk一致

3、 QQ及Qzone

QQ及Qzone使用同一个AppID及Appkey,登录腾讯开放平台(http://open.qq.com/) ,选择Android或iOS应用,填写相关应用信息并提交审核,未审核前通过只能使用测试账号

4、钉钉
阿里家的钉钉,莫名其妙火了起来。
登录钉钉开放平台 (https://open.dingtalk.com/?spm=a219a.7629140.0.0.95ChxP),登录后选择自助工具,创建分享应用

正确配置签名、包名及相应的应用icon等基本信息,注意应用包名、签名设置必须和打包后的apk一致

5、支付宝
登录蚂蚁金服开放平台(https://open.alipay.com/platform/home.htm),使用支付宝账号登录,注册APP。

6,剩下的Twitter Facebook 腾讯微博 LinkedIn 人人网 豆瓣之类的都去对应的开放平台申请账号(mdzz),如果你想集成他们的分享,我就不一一赘述了。

7、看这里,说一些重要的注意事项

1)所有平台,请正确配置签名、包名及相应的应用icon等基本信息,注意应用包名、签名设置必须和打包后的apk一致
2)我们认证是为了获取 id和key,这两个值很重要,整理放到一起,新浪微博比较特殊,多个回调地址。
3)我们需要把这些值配置到umeng后台,具体的如下图

选中自己的项目后,点击社会化分享里面的设置,给每个平台设置进去上面得到的id和key。

三、配置

1、umeng的集成工具

顺便提一下umeng的集成工具,很智能(zz)的集成工具,你熟练使用umeng之后,再用集成工具,就会觉得很方便。第一次,还是跳过吧,看下面的。

2、导入jar包

下载sdk后,会发现有精简版和完整版的区别,根据自己的需要下载需要的吧。

然后下面就是一些copy了,其实如果你使用umeng集成工具,你可以选择你需要集成的umeng会把你需要的jar包和资源放到一起,你不需要copy很多次了。(省略这项,看下面)

你需要copy下图这几个文件夹里面的所有东西

main是核心库

lib里面有三个jar,copy到工程libs下面
umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

res里面文件全选copy到工程res下面

platforms是平台库

和核心库一样,copy里面的libs和res里面的文件,但对于平台来说可能会有回调activity,

支付宝: 把apshare这个文件(里面包含activity)直接copy到项目的包名下,com.xxx.xxx下面。
微信 :把wxapi这个文件(包含activity,精简版和完整版不同)放到copy项目包名下

钉钉与微信相似,钉钉需要在包名目录下创建ddshare文件夹,然后建立一个DDShareActivity的类,DingCallBack。

新浪和QQ 不需要回调activity,但是需要在登录分享的activity内加入回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

3、配置Android Manifest XML

这些权限都是必要的,已经存在的不需要再次添加。

   <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.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

4、Android Manifest XML中配置activity

加上umeng的appkey

   <meta-dataandroid:name="UMENG_APPKEY"android:value="561cae6ae0f55abd990035bf" ></meta-data>

新浪:

   <activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"android:configChanges="keyboardHidden|orientation"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:exported="false"android:screenOrientation="portrait" ></activity><activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"android:configChanges="keyboardHidden|orientation"android:exported="false"android:windowSoftInputMode="adjustResize"></activity><activity
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"android:launchMode="singleTask"android:name="com.sina.weibo.sdk.share.WbShareTransActivity"><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

微信:不需要

支付宝:

 <activity
        android:name=".apshare.ShareEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" />

钉钉:

<activity
    android:name=".ddshare.DingCallBack"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" />      

qq精简版:

 <activity
            android: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><activity
            android:name="com.umeng.qq.tencent.AssistActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/>

qq完整版:

 <activity
            android:name="com.tencent.tauth.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><activity
            android:name="com.tencent.connect.common.AssistActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/>

5、配置友盟key及三方key

建立一个application文件,注意要在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

  <applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:name=".App"android:theme="@style/AppTheme">

在application里面进行umeng的第三方key配置

这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置
把前面在其他平台获取的key

public class App extends Application{
{
PlatformConfig.setWeixin(“wx967daebe835fbeac”, “5bb696d9ccd75a38c8a0bfe0675559b3”);
PlatformConfig.setQQZone(“100424468”, “c7394704798a158208a74ab60104f0ba”);
PlatformConfig.setSinaWeibo(“3921700954”, “04b48b094faeb16683c32669824ebdad”, “http://sns.whalecloud.com“);
}
}
当然初始化操作也放在application里面进行@Override

public void onCreate() {super.onCreate();UMShareAPI.get(this);
}

6、 将文件夹中的签名文件放入到工程中,这个不再赘述。

四,登录集成

1、登录的集成很简单,直接调用方法即可
第三方登录包含两种使用场景:

获取用户资料的授权接口,使用该接口可以获取该三方平台返回的所有资料(包括姓名,性别,头像等)

三方授权,开发者调用授权接口,可以获取accesstoken相关的信息,但是没有用户资料(姓名,性别,头像等),需要开发者根据token自己去请求用户资料,对于保密性要求较高的用户可以使用。 目前支持第三方登录的平台包括:

国内平台(微信、新浪微博、QQ、豆瓣、人人)

国外平台(Facebook、Twitter、linkedIn、kakao、VKontakte、Dropbox)

这里推荐直接使用第一种方式实现,因为本质上三方登录最终都需要拉取三方平台的用户资料,从这点来说,直接调用SDK和通过后台服务器请求,安全性是一样的

mShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.SINA, umAuthListener);

SHARE_MEDIA.SINA写入你需要的平台,umAuthListener是回调方法

UMAuthListener authListener = new UMAuthListener() {/*** @desc 授权开始的回调* @param platform 平台名称*/@Overridepublic void onStart(SHARE_MEDIA platform) {}/*** @desc 授权成功的回调* @param platform 平台名称* @param action 行为序号,开发者用不上* @param data 用户资料返回*/@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();}/*** @desc 授权失败的回调* @param platform 平台名称* @param action 行为序号,开发者用不上* @param t 错误原因*/@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {Toast.makeText(mContext, "失败:" + t.getMessage(),                                  Toast.LENGTH_LONG).show();}/*** @desc 授权取消的回调* @param platform 平台名称* @param action 行为序号,开发者用不上*/@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();}};

onComplete方法是成功的方法,map集合中存储着用户信息。根据公司后台的需要把需要的信息拿过去走登录接口或者注册接口都可以。

一些常用参数。

获取用户资料可以使用如下接口:

mShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.SINA, umAuthListener);

“`
UMAuthListener authListener = new UMAuthListener() {
/**
* @desc 授权开始的回调
* @param platform 平台名称
*/
@Override
public void onStart(SHARE_MEDIA platform) {

    }/*** @desc 授权成功的回调* @param platform 平台名称* @param action 行为序号,开发者用不上* @param data 用户资料返回*/@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();}/*** @desc 授权失败的回调* @param platform 平台名称* @param action 行为序号,开发者用不上* @param t 错误原因*/@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {Toast.makeText(mContext, "失败:" + t.getMessage(),                                  Toast.LENGTH_LONG).show();}/*** @desc 授权取消的回调* @param platform 平台名称* @param action 行为序号,开发者用不上*/@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();}
};

分享实现看 umeng(友盟)实现第三方登录和分享详解之分享

umeng(友盟)实现第三方登录和分享详解之登录详解相关推荐

  1. 友盟集成第三方登录--微信、QQ实现

    友盟集成了第三方登录,本给我们带来便利,但是文档只描述了集成方式,出现问题,发现还得自己各种baidu,这里总结自己遇到的一些坑,以防下次再踩. 友盟集成第三方微信登录: 友盟集成方案参考:http: ...

  2. 友盟消息推送服务器demo,umeng友盟消息推送功能集成

    umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: 2.集成步骤如下 下载sdk 注意:有两种sdk如果用户已经集成支付 ...

  3. Android:Umeng(友盟)消息推送(二)

    在已集成友盟统计的情况下:Android:Umeng(友盟)数据统计(一) 第一步: 个人中心---U-Push(消息推送)---添加新应用---从已有应用中添加  如图: 获得Appkey和secr ...

  4. umeng(友盟)集成

    1.umeng(友盟)集成--------认识umeng 2.cocos2dx + xcode集成umeng统计分析sdk 3.测试umeng统计分析功能

  5. 友盟QQ第三方登录分享

    友盟QQ登录分享: 需要第三方jar包下载:https://share.weiyun.com/5PUfvYX 切记测试设备需安装QQ应用,以免尴尬. 效果图: 1.导入jar包到libs( 右击 ad ...

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

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

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

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

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

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

  9. 基于友盟的第三方社会化分享:

    1.申请key,并在AndroidManifest配置key: android:name="UMENG_APPKEY" android:value=" 你的key&quo ...

  10. xcode 配置wechat_友盟微信、QQ等分享提示未验证应用配置

    确认微信App版本是否支持Universal Links 配置我们App的苹果Universal Links 请按照以下步骤将您的应用和网站相关联以获取: 将添加Associated Domains ...

最新文章

  1. linux+分配挂载点权限,Linux系统管理(一)——初学者建议
  2. iptables 流量速率控制
  3. 网络营销外包专员浅析网络营销外包站内关键词优化技巧(不外传)
  4. 日期類型的定義6/14
  5. C#实现异步消息队列
  6. 黑马程序员--c#中break_continue_return__goto_throw的区别
  7. POJ 2115 C Looooops
  8. Angular Injection Token records map的填充原理
  9. js框架页弹出页面关闭
  10. pyqt5程序的图标
  11. 简单易懂,过程详述大整数进制转换
  12. anaconda安装完怎么打开_10分钟带你安装和配置Anaconda
  13. 《梦幻西游》手游服务器如何实现200万玩家同时在线?(技术篇)
  14. 人工智能NLP在金融领域的发展趋势和实践经验
  15. 永恒之蓝--Windows7
  16. STM32CubeMX学习笔记(25)——FatFs文件系统使用(操作SPI Flash)
  17. 日本亚马逊海淘经验-2015
  18. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
  19. Linux安装Docker CE
  20. 教你如何用C++快速生成1000万个随机数

热门文章

  1. S7-PLCSIM仿真操作步骤
  2. eSIM卡要成物联网“网红”?
  3. Java设计模式:享元模式
  4. 华为手机畅享9怎么查计算机历史记录,华为畅享9Plus的备忘录内容误删了怎么办?...
  5. 【笔记】android录音权限遇到的问题和兼容8.0权限请求的方案
  6. UEFI启动是什么意思 UEFI启动对比Bios启动优势在哪里
  7. 如何做一个过场动画(场景加载)
  8. 疫情放缓就按捺不住了?6万人挤爆景区!钟南山:保持距离非常重要
  9. 关于企业贷款违约情况的数据分析研究的Python数据分析案例
  10. 零基础Java开发好学吗?