1. 程式人生 > >快速實現抖音分享與第三方登錄

快速實現抖音分享與第三方登錄

混淆代碼 listen ble adl 五步 row 9.1 onerror array

前言:
我們終於等到了抖音的分享問世,我們可以對小視頻進行處理分享到抖音,提高自己的app在抖音中的曝光度,提高自己的app的宣傳效果,下面我們看下具體的分享步驟吧;

第一步:申請抖音與mob賬號
抖音賬號申請:
http://bbs.mob.com/thread-26199-1-1.html
Mob賬號申請:
http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1
得到appkey與appsecret

第二步:抖音分享類型與要求
抖音分享類型可以查看此鏈接:
http://wiki.mob.com/%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E5%88%86%E4%BA%AB%E5%86%85%E5%AE%B9%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E/#map-2

了解抖音分享的註意事項和要求,如下說明:
註意:目前分享圖片只支持本地圖片分享,建議直接保存到手機相冊路徑下分享,否則抖音可能無法找到圖片
要求:
視頻:
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) imageArray(String[] AVATARS(多個本地圖片)) setActivity
//適配9.0系統
分享視頻 shareType(SHARE_VIDEO) FilePath(“/sdcard/下的視頻路徑”); setActivity
//適配9.0系統
多段視頻拼接分享 shareType(SHARE_VIDEO) VideoPathArray(String[] AVATARS(多個本地視頻路徑)); setActivity
//適配9.0系統

第三步:集成SDK
可查看文檔:http://wiki.mob.com/sdk-share-android-3-0-0/
主要步驟如下:
1、 配置根目錄gradle文件:
在根目錄下的build.gradle中配置如下classpath;
buildscript {

repositories {
jcenter()
}
dependencies {
...
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
}
}

2、 配置mob與抖音的key
在使用到Mob產品的module下面的build.gradle文件裏面添加引用,配置上第一步申請的mob的key和appsecret,還有抖音的appkey與appsecret,配置完,重新編譯下即可;
apply plugin: ‘com.mob.sdk‘
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"

ShareSDK {
    //平臺配置信息
    devInfo {
        Wechat {
            appId "wx4868b35061f87885"
            appSecret "64020361b8ec4c99936c0e3999a9f249"
        }

Douyin{
AppKey="8148612606"
AppSecret="mCltrhUqwshFa86egDTs0491ibaAulKA"
Enable= "true"
}
}
}

}

3、 別忘記添加混淆代碼
-keep class cn.sharesdk.{*;}
-keep class com.sina.*{;}
-keep class
.R$ {;}
-keep class .R{*;}
-keep class com.mob.*{;}
-keep class m.framework.
{*;}
-keep class com.bytedance.*{;}
-dontwarn cn.sharesdk.
-dontwarn com.sina.

-dontwarn com.mob.
-dontwarn
.R$*
好了到此,集成完畢,如果更多查看需求,可以查看官方集成文檔;

第四步:分享代碼調用
1.onekeyshare的分享,ShareSDK提供了界面,可以直接調用,不需要自己寫界面進行觸發,代碼如下所示:
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() {br/>@Override
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);

分享效果:
分享圖片:

分享視頻:

第五步:第三方登錄-抖音
登錄文檔:
http://wiki.mob.com/%E8%8E%B7%E5%8F%96%E6%8E%88%E6%9D%83%E7%94%A8%E6%88%B7%E8%B5%84%E6%96%99-2/

登錄後可以返回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);//授權並獲取授權信息

註意事項:
1、 抖音申請的key是綁定包名的,所以綁定的key與app的包名不一致,會返回errcode:-4
2、 抖音分享適配android9.0要在參數中調用
Platform.ShareParams sp = new Platform.ShareParams();
sp.setActivity(this);
抖音登錄適配android9.0要在登錄前添加ShareSDK.setActivity(this);//適配android9.0
3、以上介紹的是gradle集成方式,如果采用離線jar包方式集成,需要在AndroidManifest中加入權限等配置,還需要加上回調類的配置,具體可以參考官方的離線集成文檔;

快速實現抖音分享與第三方登錄