第三方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/不一樣平臺分享內容的詳細…

相關文章
相關標籤/搜索