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

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() {
    @Override
    public void onComplete(PlatformType platform_type, Map<String, String> map) {
        Log.i("tsy", "oncomplete:" + map);
    }

    @Override
    public void onError(PlatformType platform_type, String err_msg) {
        Log.i("tsy", "onError:" + err_msg);
    }

    @Override
    public 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() {
    @Override
    public void onComplete(PlatformType platform_type) {
        Log.i("tsy", "share onComplete");
    }

    @Override
    public void onError(PlatformType platform_type, String err_msg) {
        Log.i("tsy", "share onError:" + err_msg);
    }

    @Override
    public 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 中添加:

<activity
    android: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-->
<activity
    android: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>
<activity
    android: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 中添加:

<activity
    android: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 注意

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值