SocialSDKAndroid

项目地址:tsy12321/SocialSDKAndroid
简介:对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等

对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等

欢迎发 issue 建议新的功能点和渠道集成

原文阅读:

http://www.jianshu.com/p/4ec1d9c15763

0 版本更新

版本号 更新内容
1.0 集成微信授权登录,5 种分享媒介,微信会话分享,微信朋友圈分享
1.1 集成 QQ 授权登录,QQ 分享,QQ 空间分享
1.2 将微信 appsecret 移除,客户端不放 appsecret
1.3 增加新浪微博授权登录和分享

1 目录介绍

采用了 jar 包的方式封装 sdk,需要使用时可以引入 social_sdk.jar 再搭配需要的平台 sdk 使用. 这种方式可以减少 sdk 的体积,需要什么平台就引入哪个平台.更为合理.

  • social_sdk/ sdk 的开发源码 module 开发完成后用 gradle 中 makejar 打成 jar 包
  • social_sdk.jar sdk 的 jar 包 直接使用.搭配所需的平台 sdk 包.
  • weixin_sdk/ 微信 sdk
  • qq_sdk/ qq sdk
  • sina_weibo_sdk/ 新浪微博 sdk
  • SampleCode/ 一个示例代码(非可运行项目)

2 功能介绍

2.1 授权登录

  1. 微信授权登录
  2. QQ 授权登录
  3. 新浪微博授权登录

2.2 分享

2.2.1 分享媒介

  1. 文字
  2. 图片
  3. 音乐
  4. 视频
  5. 网页

2.2.2 分享平台

  1. 微信会话分享
  2. 微信朋友圈分享
  3. QQ 分享
  4. QQ 空间分享
  5. 新浪微博分享

3 开发说明

3.1 准备

将 social_sdk.jar 和需要的平台 sdk 放入项目中引用.

AndroidManifest 加上以下基本的权限(之后各个平台会注册一些不同的信息后面会说明)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_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.MOUNT_UNMOUNT_FILESYSTEMS" />

3.2 配置平台信息

在项目入口(或者在调用前)需要配置平台的信息,配置一次即可.

PlatformConfig.setWeixin(WX_APPID);
PlatformConfig.setQQ(QQ_APPID);
PlatformConfig.setSinaWB(SINA_WB_APPKEY);

3.3 接口使用说明

调用方式使用 api 调用登录或者分享接口,在参数中区别平台,实现回调接收成功 取消或者失败的结果.

示例如下:(某些平台会有一些特殊处理后面会在平台中说明)

初始化 api:

SocialApi mSocialApi = SocialApi.get(getApplicationContext());

登录授权:

mSocialApi.doOauthVerify(this, PlatformType.WEIXIN, new AuthListener() {@Overridepublic void onComplete(PlatformType platform_type, Map<String, String> map) {Log.i("tsy", "oncomplete:" + map);}@Overridepublic void onError(PlatformType platform_type, String err_msg) {Log.i("tsy", "onError:" + err_msg);}@Overridepublic void onCancel(PlatformType platform_type) {Log.i("tsy", "onCancel");}
});

分享:


//分享媒介 后面有详细介绍
ShareWebMedia shareMedia = new ShareWebMedia();
shareMedia.setTitle("分享网页测试");
shareMedia.setDescription("分享网页测试");
shareMedia.setWebPageUrl("http://www.baidu.com");
shareMedia.setThumb(BitmapUtils.readBitMap(getApplicationContext(), R.mipmap.ic_launcher));mSocialApi.doShare(this, PlatformType.WEIXIN, shareMedia, new ShareListener() {@Overridepublic void onComplete(PlatformType platform_type) {Log.i("tsy", "share onComplete");}@Overridepublic void onError(PlatformType platform_type, String err_msg) {Log.i("tsy", "share onError:" + err_msg);}@Overridepublic void onCancel(PlatformType platform_type) {Log.i("tsy", "share onCancel");}
});

3.4 分享媒介

现在集成了文字分享,图片分享,音乐分享,视频分享,网页分享 5 种分享媒介.不同的平台可能只有其中某几种.

3.4.1 文字分享

ShareTextMedia shareMedia = new ShareTextMedia();
shareMedia.setText("分享文字测试");

3.4.2 图片分享

ShareImageMedia shareMedia = new ShareImageMedia();
shareMedia.setImage(BitmapUtils.readBitMap(getApplicationContext(), R.mipmap.ic_launcher));

3.4.3 音乐分享

ShareMusicMedia shareMedia = new ShareMusicMedia();
shareMedia.setTitle("分享音乐测试");
shareMedia.setDescription("分享音乐测试");
shareMedia.setMusicUrl("http://idg-tangsiyuan.tunnel.nibaguai.com/splash/music.mp3");
shareMedia.setThumb(BitmapUtils.readBitMap(getApplicationContext(), R.mipmap.ic_launcher));

3.4.4 视频分享

ShareVideoMedia shareMedia = new ShareVideoMedia();
shareMedia.setTitle("分享视频测试");
shareMedia.setDescription("分享视频测试");
shareMedia.setVideoUrl("http://idg-tangsiyuan.tunnel.nibaguai.com/splash/music.mp3");
shareMedia.setThumb(BitmapUtils.readBitMap(getApplicationContext(), R.mipmap.ic_launcher));

3.4.5 网页分享

ShareWebMedia shareMedia = new ShareWebMedia();
shareMedia.setTitle("分享网页测试");
shareMedia.setDescription("分享网页测试");
shareMedia.setWebPageUrl("http://www.baidu.com");
shareMedia.setThumb(BitmapUtils.readBitMap(getApplicationContext(), R.mipmap.ic_launcher));

4 第三方平台接入

4.1 微信

4.1.1 集成 sdk

将目录中的 weixin_sdk_v3.1.1.jar 放入项目.

4.1.2 配置

创建固定 activity: 包名.wxapi.WXEntryActivity.java 该 activity 继承 WXCallbackActivity 类.

...
import com.tsy.sdk.social.weixin.WXCallbackActivity;/*** Created by tsy on 16/8/4. */
public class WXEntryActivity extends WXCallbackActivity {}

AndroidManifest 中添加:

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

4.1.3 常量定义

设置配置信息:

PlatformConfig.setWeixin(WX_APPID);

PlatformType:

微信:PlatformType.WEIXIN(可用于登录和微信回话分享)

朋友圈:PlatformType.WEIXIN_CIRCLE(用于微信朋友圈分享)

4.1.4 注意

使用微信登录分享需要签名打包,并且签名和包名要和微信平台填入的信息一致。

4.2 QQ

4.2.1 集成 sdk

将目录中的 qq_mta-sdk-1.6.2.jar 和 qq_sdk_v3.1.0.jar 放入项目.

4.2.2 配置

AndroidManifest 中添加:

<!--qq-->
<activityandroid:name="com.tencent.tauth.AuthActivity"android:noHistory="true"android:launchMode="singleTask" ><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="tencent 你的 appid" /></intent-filter>
</activity>
<activityandroid:name="com.tencent.connect.common.AssistActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" />

4.2.3 常量定义

设置配置信息:

PlatformConfig.setQQ(QQ_APPID);

PlatformType:

微信:PlatformType.QQ(可用于登录和 QQ 分享)

朋友圈:PlatformType.QZONE(用于 qq 控件分享)

4.2.4 注意

使用 QQ 登录需要签名打包,并且签名和包名要和 QQ 开放平台填入的信息一致。

4.3 新浪微博

4.3.1 集成 sdk

将目录中的 weiboSDKCore_3.1.4.jar 放入项目.

将所有 so 文件统一放到项目的目录 app/jniLibs 中(和 libs 同级), 然后在 gradle 中加上

android {...//引入微博的所有 so 库sourceSets {main {jniLibs.srcDirs = ['jniLibs']}}
}

4.3.2 配置

AndroidManifest 中添加:

<activityandroid:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"android:configChanges="keyboardHidden|orientation"android:exported="false"android:windowSoftInputMode="adjustResize"></activity>

并且在发起分享的 activity 页面的 AndroidManifest 页面中加上

<activity android:name="com.tsy.girl.MainActivity">     <!--发起分享的页面--><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 中添加以下代码.(假如是 MainActivity)

实现 IWeiboHandler.Response 接口, 然后在实现的方法中写:

@Override
public void onResponse(BaseResponse baseResponse) {((SinaWBHandler)mSocialApi.getSSOHandler(PlatformType.SINA_WB)).onResponse(baseResponse);
}

实现 onNewIntent 和 onActivityResult 方法:

@Override
protected void onNewIntent(Intent intent) {((SinaWBHandler)mSocialApi.getSSOHandler(PlatformType.SINA_WB)).onNewIntent(intent, this);
}@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {mSocialApi.onActivityResult(requestCode, resultCode, data);
}

在 onCreate 中添加以下:

if (savedInstanceState != null) {((SinaWBHandler)mSocialApi.getSSOHandler(PlatformType.SINA_WB)).onNewIntent(getIntent(), this);
}

然后正常发起授权或者分享代码即可.

4.3.3 常量定义

设置配置信息:

PlatformConfig.setSinaWB(SINA_WB_APPKEY);

4.3.4 注意

使用新浪登录分享需要签名打包,并且签名和包名要和新浪平台填入的信息一致。

对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等相关推荐

  1. 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...

  2. 全军尽墨的Android应用:社会化授权登录及分享安全漏洞

    随着微信微博等社会化媒体的火热,第三方登录迅速成为一种快捷注册的方式,社会化分享也成为一种知识快速传播的渠道.在移动端,几乎大多数应用都接入了第三方登录或者分享组件,尤其是微信.QQ.微博三大巨头.这 ...

  3. android qq授权申请appkey,手把手带你集成友盟实现授权登录、分享

    android.jpg 集成准备(获取AppKey) 第一步.png 第二步.png 第三步.png 第四步.png 第五步.png 第六步.png 这里就可以拿到友盟的AppKey了接下来集成友盟 ...

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

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

  5. 苹果apple账号授权登录第三方APP

    Apple官方文档 前言:由于公司最近有个业务需求是要进行Apple账号授权登录,于是我看边看文档边借鉴其他人的写法,发现好多文章都有一个共性,一个是在解析JWT的时候自己设置参数后进行判断,这样做没 ...

  6. 使用share SDK实现QQ空间授权登录、分享(1.x版本)

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:广州掌淘网络科技有限公司 ...

  7. C++ 中 对dll二次封装时,加载第三方库dll时 LoadLibrary 时错误代码126

    前提:  第三方dll名为 A.dll   我自己对A.dll又重新封装了一个B.dll  ,然后使用C程序进行测试,发现在B.dll中有加载A.dll的地方出错,错误代码为126. 具体代码如下: ...

  8. 微信授权登录第三方app遇到的问题

    最近公司app要求实现微信授权登录app的功能,我是个应届毕业生,工作经验不是很足,但是,开发任务来了,我也不会拖泥带水,去了微信开放平台注册了公司的app,得到了appid等相关信息,回到程序里面, ...

  9. QQ,微信第三方授权登录、分享

    登录pc 微信登录 找后台拿链接 QQ登录 https://graph.qq.com/oauth2.0/show?which=Login&display=pc&state=当前时间戳& ...

最新文章

  1. PCL点云配准(1)
  2. 2016校招内推 -- 阿里巴巴前端 -- 四面面试经历
  3. 杨柳目-杨柳科-Info-新闻:注意了!杨絮解决有办法了
  4. 《Android深度探索》第一章心得体会
  5. sql server 群集_设计有效SQL Server群集索引
  6. percona-toolkit源码编译安装
  7. 几种常用网页返回顶部的代码
  8. yum安装python3
  9. 使用seafile创建个人云(类似百度云)
  10. 窝在二线城市很难受,要杀回一线城市重造吗?
  11. DNW刷机210步骤和常见问题
  12. 一文彻底弄清4G/蓝牙/WiFi/TCP/IP之间的关系
  13. 实用电路:用MOS管模拟的可调功率电阻
  14. Qt用SVG图片作为背景图
  15. AE制作粒子飘雪效果
  16. C语言实现linux环境UDP协议接收发送数据
  17. 10条SKETCH的秘诀,为你提高工作的效率
  18. 国科gk7102s上cp2528值i2c触摸按键驱动实现
  19. html载入图片代码,HTML图片代码
  20. pandas 读取的数据少了一行

热门文章

  1. 【基于NSR3588开发板Android12三屏拼接显示实例】
  2. 最后谁剩下来了就返回哪个阵营 Dota2 Senate
  3. Algorithm Problem:Greed
  4. 账本App的制作教程
  5. 《考试脑科学》阅读笔记
  6. 在学习ros时,使用roslaunch命令时出现下列报错 load_parameters: unable to set parameters (last param was [/move_base/
  7. 不修条地铁,都不好意思叫自己大城市(附地铁发展图)
  8. 服务器串口硬盘梅捷主板设置,梅捷主板bios设置ahci
  9. 大学计算机作业互评评语简短,大学学生互评评语100字
  10. 从高考到程序员:我的程序探险之旅