第三方SDK集成庫衔彻,支持 授權(quán)/分享/支付 等功能
- 授權(quán) 目前支持 微信/QQ/新浪微博纽门,客戶端只需要配置APPID(新浪微博)
- 分享 目前支持 微信(會話/朋友圈/收藏)式镐,QQ/QZone陶耍,新浪微博
- 支付 目前支持 支付寶/微信支付
- 對于授權(quán)與分享,客戶端只不用配置APPSECRET势腮,只需要要APPID(新浪微博授權(quán)需要redirectUrl)
- 對于支付联贩,APPID包含在由后端動態(tài)返回的paydata里
- 可注冊自定義平臺實現(xiàn),滿足特殊需求
- 分享并未實現(xiàn)ui捎拯,需要自己提供ui
目前這個庫還不穩(wěn)定泪幌,有些細(xì)節(jié)并未仔細(xì)考慮,有些功能也并未進(jìn)行測試署照,支持的平臺也不多祸泪,歡迎大家 star/issue/pr,共同完善這個庫
關(guān)于授權(quán)
成功后的結(jié)果為 "code|{code}", "token|{openId}|{token}" 兩種形式
- 微信授權(quán)是OAuth2.0返回的授權(quán)碼(code)
- QQ授權(quán)是SSO返回的是token
- 微博授權(quán)其文檔說是支持SSO與OAuth2.0建芙,根據(jù)情況可能返回code與token
但客戶端其實不需要關(guān)心是code還是token没隘,直接把result發(fā)結(jié)服務(wù)端就好了
關(guān)于支付
很多支付類庫會在客戶端處理商品支付信息,其實這是不必要要的禁荸,直接由服務(wù)端返回數(shù)據(jù)并交給支付SDK右蒲,然后處理支付結(jié)果就好了
關(guān)于分享
支持 純文本/純圖片/圖文/網(wǎng)頁/音樂/視頻 等分享類型
- 網(wǎng)頁/音樂/視頻 是卡片形式阀湿,可添加 標(biāo)題(title)/描述(description)/縮略圖(thumb)
- 微信朋友圈的網(wǎng)頁鏈接不顯示 description
- 新浪微博文本包含的網(wǎng)址會轉(zhuǎn)成鏈接
- QZone 的 純文本/純圖片/圖文/視頻 以“說說”的形式發(fā)布
平臺 | 純文本 | 純圖片 | 圖文 | 網(wǎng)頁 | 音樂 | 視頻 |
---|---|---|---|---|---|---|
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 |
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();
使用授權(quán)SDK
設(shè)置全局事件回調(diào)(非必要)
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);
}
});
接收授權(quán)結(jié)果(新浪微博/QQ)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
AuthorizeSDK.onHandleResult(this, requestCode, resultCode, data);
}
調(diào)用授權(quán)
AuthorizeSDK.authorize(MainActivity.this, platform, new OnSucceed<String>() {
@Override
public void onSucceed(String result) {
Toast.makeText(MainActivity.this, "登陸成功 - " + result, Toast.LENGTH_LONG).show();
}
});
注冊自定義平臺,需要實現(xiàn) IAuthorize 與相應(yīng)的 IFactory
AuthorizeSDK.register(IFactory<IAuthorize> factory);
AuthorizeSDK.register(String platformName, String appId, Class<IAuthorize> clazz);
使用支付SDK
全局事件回調(diào)的設(shè)置與授權(quán)SDK類似
調(diào)用支付
PaymentSDK.pay(MainActivity.this, platform, paydata, new OnSucceed<String>() {
@Override
public void onSucceed(String result) {
// todo
}
});
注冊自定義平臺瑰妄,需要實現(xiàn) IPayable 與相應(yīng)的 IFactory
PaymentSDK.register(IFactory<IPayable> factory);
PaymentSDK.register(String platformName, Class<IPayable> clazz);
使用分享SDK
全局事件回調(diào)的設(shè)置與授權(quán)SDK類似
...
分享結(jié)果的接收也與授權(quán)SDK類似(QQ)
...
注冊自定義平臺陷嘴,需要實現(xiàn) IShareable 與相應(yīng)的 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);
// 分享網(wǎng)頁鏈接
ShareSDK.make(this, new MoWeb(url))
.withTitle("這是標(biāo)題")
.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("這是標(biāo)題")
.withDescription("這是摘要")
.withThumb(thumb)
.share(platform);
參考
友盟+分享組件90%常見問題匯總
http://bbs.umeng.com/thread-17764-1-1.html
友盟各平臺可分享內(nèi)容預(yù)覽
http://dev.umeng.com/social/android/share-detail#5
Android 不同平臺分享內(nèi)容的詳細(xì)說明
http://wiki.mob.com/不同平臺分享內(nèi)容的詳細(xì)說明