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

准备工作

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);//授权并获取授权信息

注意事项:抖音申请的key是绑定包名的,所以绑定的key与app的包名不一致,会返回errcode:-4

快速实现抖音的分享&登录(android)的更多相关文章

  1. PHP根据抖音的分享链接来抓包抖音视频

    现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...

  2. CorelDRAW快速制作抖音幻影图像效果

    本教程讲解非常受欢迎的幻影图像效果(Anaglyph 3d),也叫图像分色立体效果,这其中我们要用到CorelDRAW中的透明度工具. 在开始实施Anaglyph效应之前,应当知道,Anaglyph  ...

  3. 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...

  4. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

  5. 今日头条、抖音、西瓜、火山、微视、陌陌等自媒体平台小视频批量下载工具v1.1.0(视频搬运福利)

    前言 目前各大自媒体平台爆火,网络流量暴涨,各大自媒体平台的小视频为广大个广告主带来了如泉涌般的的视频流量,更给广大的自媒体小编带来了丰厚的利益回报,想要创做更多的自媒体内容着实不易,下面给广大的小视 ...

  6. 利用mitmproxy实现抖音Cookie,设备ID获取(一)

    先讲解一下思路,是利用mitmproxy代理https协议,从而判定抖音个人信息接口,在个人信息接口的返回体接收时将用户信息数据,以及Header头(主要是Cookie),Query体(包含设备ID) ...

  7. Python抖音视频去水印,并打包成exe可执行文件

    前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...

  8. 10分钟快速上车短视频风口:基于uniapp框架创建自己的仿抖音短视APP

    在今年也就是第48次发布的<中国互联网络发展状况统计报告>有这样一个数据,21年的上半年以来,我国我国网民规模达10.11亿,其中短视频用户达8.88亿.碎片化的生活场景下,短视频成为人们 ...

  9. android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码

    Android精选源码 一个爬取美女图片的app Android高仿抖音 android一个可以上拉下滑的Ui效果 android用shape方式实现样式源码 一款Android上的新浪微博第三方轻量 ...

随机推荐

  1. Jmeter之数据库性能测试

    公司的**产品急待上线,但查询订单操作响应很慢,为了准确定位问题,特对几个大数据查询语句进行性能测试. 环境介绍:数据库用的MYSQL,采用分布式布置,本次单压测一台数据库服务器,查询待支付订单.待消 ...

  2. rest_famework 增删改查初第三阶段(高级,此阶段是优化第二阶段的代码)的使用

    url: re_path('authors/$', views.AuthorView.as_view()), re_path('book/(?P<pk>\d+)/$', views.Boo ...

  3. TinkPHP框架学习-03模型类

    1-----数据访问 2-----数据查询 3-----数据添加 4-----数据修改 5-----数据删除 创建一张nation表并写入三条测试数据 create table nation( `co ...

  4. 关于spring boot 的事务类型配置留存

    一.在声明式的事务处理中,要配置一个切面,其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED.SUPPORTS.M ...

  5. css 之过渡效果

    之前写css的效果,都是使用js 来完成的,但是写js比较耗费时间,有时候逻辑不对,还出不来效果,所以也比较烦:所以一些简单的效果,就使用css 来完成会比较好一些,不必耗费太多的精力: 但是写css ...

  6. K8s简单yaml文件运行例子deployment

    kubectl run 创建并运行一个或多个容器镜像. 创建一个deployment 或job 来管理容器. kubectl run 语法: $ run NAME --image=image [--e ...

  7. 【UiPath 中文教程】02 - 创建自定义 Activity

    在 UiPath Studio 中,活动 (Activity) 是流程自动化的基石,是构成自动化程序的最小模块.它们被包含在一个个 NuGet 包中. UiPath Studio 中有 3 类包: 官 ...

  8. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  9. 前端笔记-javaScript-2

    一.JavaScript的对象 简介: 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array. ...

  10. git 创建新项目 本地仓库和远程仓库的合并

    1.$ git pull origin master --allow-unrelated-histories 告诉系统允许合并不相关历史的内容 2.git branch --set-upstream ...