美文网首页三方
快速实现抖音的分享&登录(android)

快速实现抖音的分享&登录(android)

作者: HelloYouH | 来源:发表于2019-04-03 18:36 被阅读86次

    快速实现抖音分享与第三方登录

    准备工作

    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);
    

    分享效果
    分享图片:

    1.png 2.png 3.png

    分享视频:

    4.png 5.png 6.png 7.png

    授权登录

    登录后可以返回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

    相关文章

      网友评论

        本文标题:快速实现抖音的分享&登录(android)

        本文链接:https://www.haomeiwen.com/subject/pgozbqtx.html