第三方SDK集成库(受权/分享/支付)

github.com/czy1121/sdk…
reezy.me/2017-03-31/…html

第三方SDK集成库,支持 受权/分享/支付 等功能java

  • 受权 目前支持 微信/QQ/新浪微博,客户端只须要配置APPID(新浪微博)
  • 分享 目前支持 微信(会话/朋友圈/收藏),QQ/QZone,新浪微博
  • 支付 目前支持 支付宝/微信支付
  • 对于受权与分享,客户端不用配置APPSECRET,只须要要APPID(新浪微博受权须要redirectUrl)
  • 对于支付,APPID包含在由后端动态返回的paydata里
  • 可注册自定义平台实现,知足特殊需求
  • 分享并未实现ui,须要本身提供ui

目前这个库还不稳定,有些细节并未仔细考虑,有些功能也并未进行测试,支持的平台也很少,欢迎你们 star/issue/pr,共同完善这个库android

关于受权

成功后的结果为 "code|{code}", "token|{openId}|{token}" 两种形式git

  • 微信受权是OAuth2.0返回的受权码(code)
  • QQ受权是SSO返回的是token
  • 微博受权其文档说是支持SSO与OAuth2.0,根据状况可能返回code与token

但客户端其实不须要关心是code仍是token,直接把result发结服务端就行了github

关于支付

不少支付类库会在客户端处理商品支付信息,其实这是没必要要要的,直接由服务端返回数据并交给支付SDK,而后处理支付结果就行了后端

关于分享

支持 纯文本/纯图片/图文/网页/音乐/视频 等分享类型微信

  • 网页/音乐/视频 是卡片形式,可添加 标题(title)/描述(description)/缩略图(thumb)
  • 微信朋友圈的网页连接不显示 description
  • 新浪微博文本包含的网址会转成连接
  • QZone 的 纯文本/纯图片/图文/视频 以“说说”的形式发布
平台 纯文本 纯图片 图文 网页 音乐 视频
QQ x o x o o x
QZone o o o o x o
WXSession o o x o o o
WXTimeline o o x o o o
Weibo o o o x x x

使用方法

添加依赖

repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.czy1121:sdk3rd:0.1.0'
}复制代码

app

repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.czy1121.sdk3rd:sdk3rd:0.1.0'
    compile 'com.github.czy1121.sdk3rd:sdk3rd-alipay:0.1.0'
    compile 'com.github.czy1121.sdk3rd:sdk3rd-qq:0.1.0'
}复制代码

使用配置

配置APPIDmaven

PlatformConfig.useQQ(BuildConfig.APPID_QQ);
PlatformConfig.useWeixin(BuildConfig.APPID_WEIXIN);
PlatformConfig.useWeibo(BuildConfig.APPID_WEIBO, "http://www.sina.com/");
PlatformConfig.usePayments();复制代码

使用受权SDK

设置全局事件回调(非必要)ide

AuthorizeSDK.setDefaultCallback(new OnCallback() {
    @Override
    public void onStarted(Activity activity) {
        Log.e("ezy", "authorize started");
    }

    @Override
    public void onCompleted(Activity activity) {
        Log.e("ezy", "authorize completed");
    }

    @Override
    public void onSucceed(Activity activity, Object result) {
        Log.e("ezy", "authorize succeed");
    }

    @Override
    public void onFailed(Activity activity, int code, String message) {
        Log.e("ezy", "authorize failed [" + code + "]" + message);
    }
});复制代码

接收受权结果(新浪微博/QQ)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    AuthorizeSDK.onHandleResult(this, requestCode, resultCode, data);
}复制代码

调用受权

AuthorizeSDK.authorize(MainActivity.this, platform, new OnSucceed<String>() {
    @Override
    public void onSucceed(String result) {
        Toast.makeText(MainActivity.this, "登录成功 - " + result, Toast.LENGTH_LONG).show();

    }
});复制代码

注册自定义平台,须要实现 IAuthorize 与相应的 IFactory

AuthorizeSDK.register(IFactory<IAuthorize> factory);
AuthorizeSDK.register(String platformName, String appId, Class<IAuthorize> clazz);复制代码

使用支付SDK

全局事件回调的设置与受权SDK相似

调用支付

PaymentSDK.pay(MainActivity.this, platform, paydata, new OnSucceed<String>() {
    @Override
    public void onSucceed(String result) {
        // todo
    }
});复制代码

注册自定义平台,须要实现 IPayable 与相应的 IFactory

PaymentSDK.register(IFactory<IPayable> factory);
PaymentSDK.register(String platformName, Class<IPayable> clazz);复制代码

使用分享SDK

全局事件回调的设置与受权SDK相似

...

分享结果的接收也与受权SDK相似(QQ)

...

注册自定义平台,须要实现 IShareable 与相应的 IFactory

ShareSDK.register(IFactory<IShareable> factory);
ShareSDK.register(String platformName, String appId, Class<IShareable> clazz);复制代码

分享

// 分享纯文本
ShareSDK.make(this, text).share(platform);
// 分享纯图片
ShareSDK.make(this, new MoImage(image)).share(platform);
// 分享图文
ShareSDK.make(this, text, new MoImage(image)).share(platform);

// 分享网页连接
ShareSDK.make(this, new MoWeb(url))
        .withTitle("这是标题")
        .withDescription("这是摘要")
        .withThumb(thumb)
        .share(platform, new OnSucceed<String>() {
           @Override
           public void onSucceed(String result) {
               Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();
           }
        });

// 分享音乐
ShareSDK.make(this, new MoMusic(url))
        .withTitle("这是标题")
        .withDescription("这是摘要")
        .withThumb(thumb)
        .share(platform);复制代码

参考

友盟+分享组件90%常见问题汇总
bbs.umeng.com/thread-1776…

友盟各平台可分享内容预览
dev.umeng.com/social/andr…

Android 不一样平台分享内容的详细说明
wiki.mob.com/不一样平台分享内容的详细…

相关文章
相关标签/搜索