对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
SocialSDKAndroid
对第三方社会化 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 授权登录
- 微信授权登录
- QQ 授权登录
- 新浪微博授权登录
2.2 分享
2.2.1 分享媒介
- 文字
- 图片
- 音乐
- 视频
- 网页
2.2.2 分享平台
- 微信会话分享
- 微信朋友圈分享
- QQ 分享
- QQ 空间分享
- 新浪微博分享
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 的集成和二次封装,比如第三方授权登录、第三方分享等相关推荐
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...
- 全军尽墨的Android应用:社会化授权登录及分享安全漏洞
随着微信微博等社会化媒体的火热,第三方登录迅速成为一种快捷注册的方式,社会化分享也成为一种知识快速传播的渠道.在移动端,几乎大多数应用都接入了第三方登录或者分享组件,尤其是微信.QQ.微博三大巨头.这 ...
- android qq授权申请appkey,手把手带你集成友盟实现授权登录、分享
android.jpg 集成准备(获取AppKey) 第一步.png 第二步.png 第三步.png 第四步.png 第五步.png 第六步.png 这里就可以拿到友盟的AppKey了接下来集成友盟 ...
- Android友盟集成QQ、微信、微博等第三方登录与分享
前言 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的.为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟.这里记录一下完整的集成与使用流程 ...
- 苹果apple账号授权登录第三方APP
Apple官方文档 前言:由于公司最近有个业务需求是要进行Apple账号授权登录,于是我看边看文档边借鉴其他人的写法,发现好多文章都有一个共性,一个是在解析JWT的时候自己设置参数后进行判断,这样做没 ...
- 使用share SDK实现QQ空间授权登录、分享(1.x版本)
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 操作步骤: 1.在share官网注册应用生成AppKey并下载SDK 网址:广州掌淘网络科技有限公司 ...
- C++ 中 对dll二次封装时,加载第三方库dll时 LoadLibrary 时错误代码126
前提: 第三方dll名为 A.dll 我自己对A.dll又重新封装了一个B.dll ,然后使用C程序进行测试,发现在B.dll中有加载A.dll的地方出错,错误代码为126. 具体代码如下: ...
- 微信授权登录第三方app遇到的问题
最近公司app要求实现微信授权登录app的功能,我是个应届毕业生,工作经验不是很足,但是,开发任务来了,我也不会拖泥带水,去了微信开放平台注册了公司的app,得到了appid等相关信息,回到程序里面, ...
- QQ,微信第三方授权登录、分享
登录pc 微信登录 找后台拿链接 QQ登录 https://graph.qq.com/oauth2.0/show?which=Login&display=pc&state=当前时间戳& ...
最新文章
- PCL点云配准(1)
- 2016校招内推 -- 阿里巴巴前端 -- 四面面试经历
- 杨柳目-杨柳科-Info-新闻:注意了!杨絮解决有办法了
- 《Android深度探索》第一章心得体会
- sql server 群集_设计有效SQL Server群集索引
- percona-toolkit源码编译安装
- 几种常用网页返回顶部的代码
- yum安装python3
- 使用seafile创建个人云(类似百度云)
- 窝在二线城市很难受,要杀回一线城市重造吗?
- DNW刷机210步骤和常见问题
- 一文彻底弄清4G/蓝牙/WiFi/TCP/IP之间的关系
- 实用电路:用MOS管模拟的可调功率电阻
- Qt用SVG图片作为背景图
- AE制作粒子飘雪效果
- C语言实现linux环境UDP协议接收发送数据
- 10条SKETCH的秘诀,为你提高工作的效率
- 国科gk7102s上cp2528值i2c触摸按键驱动实现
- html载入图片代码,HTML图片代码
- pandas 读取的数据少了一行
热门文章
- 【基于NSR3588开发板Android12三屏拼接显示实例】
- 最后谁剩下来了就返回哪个阵营 Dota2 Senate
- Algorithm Problem:Greed
- 账本App的制作教程
- 《考试脑科学》阅读笔记
- 在学习ros时,使用roslaunch命令时出现下列报错 load_parameters: unable to set parameters (last param was [/move_base/
- 不修条地铁,都不好意思叫自己大城市(附地铁发展图)
- 服务器串口硬盘梅捷主板设置,梅捷主板bios设置ahci
- 大学计算机作业互评评语简短,大学学生互评评语100字
- 从高考到程序员:我的程序探险之旅