天天看點

快速實作抖音的分享&登入(android)快速實作抖音分享與第三方登入準備工作業務代碼分享代碼授權登入

快速實作抖音分享與第三方登入

準備工作

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系統
分享多圖 imageArray(String[] AVATARS(多個本地圖檔))
分享視訊 shareType(SHARE_VIDEO) FilePath(“/sdcard/下的視訊路徑”)
多段視訊拼接分享 VideoPathArray(String[] AVATARS(多個本地視訊路徑))

注意:目前分享圖檔隻支援本地圖檔分享,建議直接儲存到手機相冊路徑下分享,否則抖音可能無法找到圖檔

分享代碼

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);//授權并擷取授權資訊           

注意事項:抖音申請的key是綁定包名的,是以綁定的key與app的包名不一緻,會傳回errcode:-4