美文网首页Android知识Android开发
第三方SDK集成库(授权/分享/支付)

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

作者: reezy | 来源:发表于2017-03-31 21:52 被阅读493次

    https://github.com/czy1121/sdk3rd

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

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

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

    关于授权

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

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

    但客户端其实不需要关心是code还是token,直接把result发结服务端就好了

    关于支付

    很多支付类库会在客户端处理商品支付信息,其实这是不必要要的,直接由服务端返回数据并交给支付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'
    }
    

    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'
    }
    

    使用配置

    配置APPID

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

    使用授权SDK

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

    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%常见问题汇总
    http://bbs.umeng.com/thread-17764-1-1.html

    友盟各平台可分享内容预览
    http://dev.umeng.com/social/android/share-detail#5

    Android 不同平台分享内容的详细说明
    http://wiki.mob.com/不同平台分享内容的详细说明

    相关文章

      网友评论

        本文标题:第三方SDK集成库(授权/分享/支付)

        本文链接:https://www.haomeiwen.com/subject/jvfbottx.html