快速實現抖音分享與第三方登入
準備工作
1、註冊抖音的key到抖音開放平臺,點選這裡檢視步驟;
2、整合ShareSDK到Mob官網文件頁面檢視即可,點選這裡檢視整合;
業務程式碼
分享要求:
視訊:
1、時長不符合要求,最大不能超過1小時,最小值抖音動態配置;
2、非mp4檔案;
3、畫幅比例不支援;
4、視訊檔案不能正常解析;
5、視訊檔案解析度過大(最小邊小於1100);
圖片:
1、寬高小於360;
2、寬高比不符合(需1/2.2<=寬高比<=2.2)
分享型別 | 引數 | 引數 | 引數 |
---|---|---|---|
分享圖片 | shareType(SHARE_IMAGE) | imagePath(“/sdcard/”) | setActivity//適配9.0系統 |
分享圖片 | shareType(SHARE_IMAGE) | imagePath(“/sdcard/”) | setActivity//適配9.0系統 |
分享多圖 | shareType(SHARE_IMAGE) | imageArray(String[] AVATARS(多個本地圖片)) | setActivity//適配9.0系統 |
分享視訊 | shareType(SHARE_VIDEO) | FilePath(“/sdcard/下的視訊路徑”) | setActivity//適配9.0系統 |
多段視訊拼接分享 | shareType(SHARE_VIDEO) | VideoPathArray(String[] AVATARS(多個本地視訊路徑)) | setActivity//適配9.0系統 |
注意:目前分享圖片只支援本地圖片分享,建議直接儲存到手機相簿路徑下分享,否則抖音可能無法找到圖片
分享程式碼
1.自有介面分享
onekeyshare的分享,SDK提供了介面,可以直接呼叫,不需要自己寫介面進行觸發,程式碼如下所示:
OnekeyShare oks = new OnekeyShare();
oks.setImagePath("/storage/emulated/0/DCIM/Camera/icon.png");//分享單獨圖片,圖片建議放到相簿目錄下
// oks.setFilePath(testVideo);//分享單獨視訊
String[] AVATARS = {
imagepath,
imagepath2 };
// oks.setImageArray(AVATARS);//分享多圖
String[] vedioarray =
new String[]{
testVideo,
testVideo
};
oks.setVideoPathArray(vedioarray);//分享多段視訊,自動拼接
oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
@Override
public void onShare(Platform platform,
cn.sharesdk.framework.Platform.ShareParams paramsToShare) {
// TODO Auto-generated method stub
if(platform.getName().equals("Douyin")){
paramsToShare.setShareType(Platform.SHARE_IMAGE);//設定抖音分享型別,圖片是SHARE_IMAGE;視屏是SHARE_VEDIO
}
}
});
// 啟動分享GUI
oks.show(MobSDK.getContext());
複製程式碼
2.單獨圖片分享
Platform douyin = ShareSDK.getPlatform(Douyin.NAME);
Platform.ShareParams sp = new Platform.ShareParams();
sp.setImagePath("/storage/emulated/0/DCIM/Camera/icon.png");//暫時只支援本地圖
sp.setShareType(Platform.SHARE_IMAGE);//設定分享圖片型別
sp.setActivity(this);//android9.0及以上系統需要配置
douyin.setPlatformActionListener (this);//分享回撥
douyin.share(sp);
複製程式碼
3.多圖分享
Platform douyin = ShareSDK.getPlatform(Douyin.NAME);
Platform.ShareParams sp = new Platform.ShareParams();
sp.setActivity(this);//適配android9.0
//多圖
String[] AVATARS = {
"/storage/emulated/0/DCIM/Camera/icon.png",
"/storage/emulated/0/Pictures/Instagram/IMG_20181024_145311_121.jpg" };
sp.setImageArray(AVATARS);
sp.setShareType(Platform.SHARE_IMAGE);
douyin.setPlatformActionListener (this);//分享回撥監聽
douyin.share(sp);
複製程式碼
4.單獨視訊分享
Platform douyin = ShareSDK.getPlatform(Douyin.NAME);
Platform.ShareParams sp = new Platform.ShareParams();
sp.setActivity(this);//適配android9.0
sp.setFilePath(testVideo);//配置視訊本地路徑
sp.setShareType(Platform.SHARE_VIDEO);//設定分享視訊型別
douyin.setPlatformActionListener (this);//設定分享回撥監聽
douyin.share(sp);
複製程式碼
5.多個視訊拼接分享
Platform douyin = ShareSDK.getPlatform(Douyin.NAME);
Platform.ShareParams sp = new Platform.ShareParams();
sp.setActivity(this);
String[] vedioarray =
new String[]{
testVideo,
testVideo
};
sp.setVideoPathArray(vedioarray);
sp.setShareType(Platform.SHARE_VIDEO);
douyin.setPlatformActionListener (this);
douyin.share(sp);
複製程式碼
分享效果 分享圖片:
分享視訊:
授權登入
登入後可以返回userid,我們拿到userid可以作為使用者登入的唯一標識,進行繫結賬戶就可以,還可以獲取一些使用者的頭像和暱稱資訊,這樣可以用來顯示使用者的資訊頁面中;
cn.sharesdk.framework.Platform dylogin = ShareSDK.getPlatform(Douyin.NAME);
if(dylogin.isAuthValid()){//判斷是否授權過,可以在這裡實現自己的邏輯,授權過了可以在這裡直接獲取使用者資訊,id等,不需要重複登入驗證
dylogin.removeAccount(true);//可以移除授權
// return;
}
if(dylogin.isClientValid()){//判斷手機中是否有抖音客戶端,如果存在執行客戶端操作,不存在實現web授權
Toast.makeText(MobSDK.getContext(), "抖音客戶端", Toast.LENGTH_SHORT).show();
}
dylogin.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
System.out.println("------------失敗"+arg2.toString());
arg2.printStackTrace();//列印失敗錯誤碼log
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MobSDK.getContext(),"失敗", Toast.LENGTH_SHORT).show();
System.out.println("----------");
}
});
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
System.out.println("--------Platform----"+arg0.getDb().exportData());//檢視授權資訊,可以拿到後做後續操作;
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MobSDK.getContext(),"成功", Toast.LENGTH_SHORT).show();
System.out.println("----------");
}
});
}
@Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
System.out.println("-------取消");
}
});
dylogin.SSOSetting(true);//設定SSO(客戶端授權),false為優先客戶端授權
ShareSDK.setActivity(this);//適配android9.0
dylogin.showUser(null);//授權並獲取授權資訊
複製程式碼