如何将 Android 上的 Vimeo 和具有特定用户访问权限的网站集成

2023-12-02

我们购买了一个用于视频流的 VIMEO 帐户。我们的网站和 Android 应用程序正在运行,并且对内容的用户级别限制由 firebase 生成的令牌管理。现在我想集成 VIMEO 视频以供我们的网站和应用程序访问,并希望确保所需用户只能使用相应的令牌来访问这些视频。

我们现在只是使用 iframe + 域级保护 + 将其设为私有,但有时可以下载,在我们的网站上显示视频。但无法管理不同的用户级别仅访问不同的视频。还努力将其集成到 Android 中以实现域级保护。它是否类似于在应用程序上显示视频的硬编码客户端令牌,或者我必须使用 Vimeo 播放器或 API 以及如何使用?

看到了一些 Android 文档,但这些对我来说似乎不清楚。请建议


我们通过 vimeo 的付费服务获得的支持确实是痛苦的经历,他们针对特定或流行用例的文档非常不清楚。我确实设法实现了我的用例,但不确定这是否是最佳实践。我将尽可能详细地描述这次经历:

  1. 我们从 Vimeo Plus 帐户转移到 Vimeo Pro 帐户(因为没有人甚至无法在没有 Pro 帐户的情况下从 api 访问 vimeo GET api 或视频文件访问权限,这是必须的)
  2. 对于我们的网站用例,我们隐藏了 vimeo 的私人视频,只允许将其嵌入到我们的网站中(尽管如果有人检查网络,他可以在任何地方短时间内使用服务器响应的 html 和有限时间令牌)
  3. 对于 Android 用例,因为它是无浏览器的,我们遵循https://github.com/vimeo/vimeo-networking-java并使用硬编码的访问令牌并在 exoplayer 中播放(因为我稍后必须对其进行加密,或者在使用 Oauth 播放视频时,我必须研发更多内容以在有限的时间内动态获取访问令牌。但问题是文档非常不清楚它甚至没有正确说明不同代币的生命周期,只是说这取决于创建方式或范围)

Coding :

confBuilder = new Configuration.Builder(accessToken);
// this access token has public+private+video file access created in the vimeo account manually
configuration = confBuilder.build();
VimeoClient.initialize(configuration);

VimeoClient.getInstance().fetchContent(url, CacheControl.FORCE_NETWORK, new ModelCallback<Video>(Video.class){
        //here url should be like "videos/{video_id}" otherwise it wasn't working whatever the url was
        @Override
        public void success(Video video) {
            //progressBar.setVisibility(View.GONE);
            if(video != null){
                Play play = video.getPlay();
                if (play != null) {
                    
                    //in my case "play" was null, but here I should get the direct link to varioud resolution files

                    VideoFile dashFile = play.getDashVideoFile();
                    String dashLink = dashFile.getLink();
                    // load link

                    VideoFile hlsFile = play.getHlsVideoFile();
                    String hlsLink = hlsFile.getLink();
                    // load link

                    ArrayList<VideoFile> progressiveFiles = play.getProgressiveVideoFiles();
                    String linkToMp4File = progressiveFiles.get(0).getLink();
                    //loadVideo();

                }
                
                //I got the link from here
                ArrayList<VideoFile> videoFiles = video.files;
                if(videoFiles != null && !videoFiles.isEmpty()) {
                    VideoFile videoFile = videoFiles.get(0); // you could sort these files by size, fps, width/height
                    String link = videoFile.getLink();
                    finalLink = link;

                    // load link
                    RunExoplayerPlayerWithThisLink();
                    // but this is http link which will redirect to https link which u have to handle in exoplayer
                }

            }
        }

        @Override
        public void failure(VimeoError error) {
            progressBar.setVisibility(View.GONE);
            Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

现在我必须处理exoplayer 中的 Http 到 Https 重定向链接这是受到限制的 默认情况下在 exoplayer 中。因此,您必须在 DefaultHttpDataSourceFactory 中将“allowCrossProtocolRedirects”设置为“true”,在 exoplayer 中播放视频时,MediaSource 中将需要它:

DefaultHttpDataSourceFactory factory;
ExtractorsFactory extractorsFactory;
MediaSource mediaSource;

factory = new DefaultHttpDataSourceFactory("exoplayer_video",null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,true);
extractorsFactory = new DefaultExtractorsFactory();
mediaSource = new ExtractorMediaSource(videoUri, factory, extractorsFactory,null,null);

如果您认为该方法可以更好,特别是关于 access_token.specific 用户访问实现,请在本主题中给我任何建议,我认为不可能完全可行。我只需在身份验证或从后端检查用户访问权限后发送链接即可。

但仍然有一个有关 Android 10 的问题平台 (api 29) 不允许在当前版本的 Vimeo Networking 库中使用有关“sslSocketFactory”的某些方法(引起原因:java.lang.IllegalStateException:无法在Android10Platform上提取信任管理器,sslSocketFactory是类com.android.org.conscrypt.OpenSSLSocketFactoryImpl)我在另一篇文章中问(解决)了这个问题(Android 10 平台的 Vimeo 网络库崩溃 (api29))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Android 上的 Vimeo 和具有特定用户访问权限的网站集成 的相关文章

  • 使用新语法应用 Android Gradle 插件

    如何使用新的 Gradle 插件语法应用 Android 插件 plugins id version 代替 buildscript dependencies classpath com android tools build gradle
  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 如何在android网络库(ION)中使用自签名SSL?

    使用此网络库 https github com koush ion https github com koush ion 由于当前状态是开发 我想使用自签名 SSL 证书 图书馆论坛有一些讨论 https github com koush
  • 使用 dpi 与 dp 缩放图像之间的差异

    我拥有所有由九个补丁位图组成的 dpi 可绘制目录 xxhdpi 和 xxxhdpi 是否必要 可绘制目录中的可绘制资源文件可检索所有缩放的位图 并且我使用可绘制资源文件 现在 我的问题是我还根据大小 小 正常等 创建了 缩放 布局目录 其
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • 如何制作在手机和平​​板电脑上使用的响应式Android应用程序?

    我创建了一个 Android 应用程序 当我运行我的应用程序时Mobile Phone它工作得很好 但是当我跑进去时Tablet应用程序的布局已更改 那么 如何制作响应式Android应用程序用于Mobile并且也在Tablet 在Andr
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • android中listview显示数据库中的数据

    我是安卓新手 我想知道如何在列表视图中显示数据库中的数据 它不会向数据库添加数据 我只是显示我们存储在数据库中的任何内容 请帮助我实现这一目标 提前致谢 使用这些课程可能会对您有所帮助 用于数据库创建 package com example
  • 如何使用应用程序接口将蓝牙套接字传递给另一个活动

    因此 根据我收集的信息 套接字连接既不可序列化 也不可分割 但我需要将蓝牙连接传递给另一个活动 我不想作为中间人编写服务 所以请不要将此作为解决方案发布 我听说有一种方法可以使用自定义应用程序接口来传递这些类型的对象 但我一生都找不到这样的
  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • 即使 Android M 上的移动数据已打开(有连接),也可以通过 WiFi(无连接)发送请求

    我必须在没有互联网连接的情况下将 UDP 数据包发送到 WiFi 模块 配有自己的 AP 但是当我将手机连接到 AP 时 Android 会在移动数据接口上重定向我的数据包 因为它有互联网连接 我使用下面的代码来完成我的工作 但它似乎不适用
  • Activity 类型中的方法 showDialog(int) 在 Android 中已被弃用?

    方法showDialog int 从类型Activity is 已弃用 什么原因 以及如何解决 什么原因 http developer android com reference android app Activity html show
  • 由于“进程崩溃”,仪器运行失败。

    我想运行以下测试 package com xxx yyy import android content Context import androidx test InstrumentationRegistry import androidx
  • Android AdMob:addView 在返回活动之前不会显示广告

    我正在尝试在游戏顶部添加横幅广告 我的活动使用带有自定义 SurfaceView 的relativelayout 我希望广告与 SurfaceView 重叠 广告会加载并可点击 但不会绘制到屏幕上 当我离开活动并返回时 会绘制广告 例如 通
  • Fragment 生命周期和在不存在的 Fragment 上调用 onCreate 的问题

    我正在 Android 中测试片段 并且片段生命周期有一些令人困惑的行为 我有一个活动 在横向和纵向模式下使用 xml 布局 我有一些代码可以访问在片段布局之一中定义的 EditText 对象 如果我以横向模式启动应用程序 一切都会正常 我
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R

随机推荐

  • 在 mysqli fetch_assoc( ) PHP 中保留换行符

    我尝试使用以下代码从 MySQL 数据库获取所有行 sql SELECT FROM myTable result conn gt query sql while row result gt fetch assoc output row ec
  • Android:获取所有发送的短信? (发件箱)

    我正在编写一个应用程序来备份所有短信 已经研究了一段时间 我刚刚意识到我用来检索短信的方法只能获取我收到的短信 收件箱 是否有可能以任何方式获得发件箱 如果它不在 Android API 中 是否可以通过某种方式从默认短信应用程序获取它 即
  • 如何在 Android 上设置日志文件最大大小

    我正在使用 microlog4android 来记录到文件 问题是如何设置最大文件大小 microlog4android FileAppender 类有两个方法 getLogSize 始终返回 1 和clear 当日志达到一定大小时我可以清
  • 是否可以更改 Wicket 活动指示器的颜色?

    情况 我正在与 Wicket s 合作IndicatingAjaxButton 我在黑色背景的页面上设置了按钮 当用户按下按钮时 按钮的活动指示灯会熄灭并旋转 直到系统准备好继续前进 问题 由于黑色背景 指示器看起来很糟糕 由于指示器的一部
  • 了解 PDF 运算符 - 适用于 iOS 应用程序

    我的任务是为我们公司创建一个 pdf 阅读器应用程序 经过一些研究后 我对 PDF 中的不同运算符感到困惑 我想澄清以下几点 The Tm运算符用作每条线的起点 我的理解正确吗 If the Tm运算符是每行的起点 我如何解析显示的文本on
  • 连接到 Power BI API 时收到“禁止 (403)”

    我们一直在努力追随这篇 Power BI 文章这样我们就可以将报告 仪表板嵌入到我们的 SaaS 产品中 具体来说 我们陷入了第 3 步 创建嵌入令牌 我们能够很好地获得不记名令牌 但是当检索报告的请求最终提交给我们收到的 API 时 操作
  • 在 Visual Studio 2010 上安装 LibCurl

    我在 Visual Studio 2010 中使用 LibCurl 时遇到了一些问题 请记住 我对 C 还很陌生 我根据 libcurl 网站上的说明构建了库 并尝试将我的项目指向包含目录 libcurl lib 等 但当我尝试构建项目时
  • VS2008升级到VS2010“无法打开文件‘mfc90d.lib’”

    我正在尝试将 Visual C 2008 项目升级到 Visual C 2010 项目 当升级完成并且我强制升级时 我收到此错误 致命错误 LNK1104 无法打开文件 mfc90d lib 我认为它应该引用 mfc100d lib 我尝试
  • 检查文件是目录还是文件[重复]

    这个问题在这里已经有答案了 我正在编写一个程序来检查某物是文件还是目录 还有比这更好的方法吗 include
  • 在使用 iText5 生成的 PDF 中使用 unicode 字符

    我对生成的 PDF 中的 unicode 字符有疑问 在我自己的工作站上一切正常 但在测试环境上却出现问题 代码插入值如下 Font boldDefaultFont FontFactory getFont FontFactory HELVE
  • 列出所有带注释的标签,带注释,按提交日期排序

    列出带有注释的所有标签似乎很容易 例如 git tag n99 or git for each ref format refname short contents refs tags 并且还可以使用git log按创建者日期列出标签 例如
  • lStar 上的资源链接失败

    我正在开发一个 React Native 应用程序 我的 Android 构建开始失败CI环境 和本地 没有任何变化 Execution failed for task app processDevelopmentDebugResource
  • 将 Firebase 云功能限制为 IP 地址

    我有几个云功能 每种类型都已设置且运行良好https onRequest 我试图找出最好 最简单的方法来允许https onRequest被调用的函数only通过指定的IP地址 这能实现吗 我猜我需要创建一个有条件的服务帐户 但我还没有达到
  • 按下按钮后,使用 VBA 在 MS Access 中导入 .DBF 文件

    我必须单击按钮将 DBF 文件导入 MS Access 表 文件名为 SourceTable dbf Access 数据库是 StudentDataBase accdb 我要插入的表名为 myTable 首先我想问 表中是否需要具有相同的字
  • Dynamodb 过滤器表达式未返回所有结果

    我想扫描过去 7 天的所有项目 所以我要做的是生成 7 天前的时间戳并过滤大于该值的时间戳 但这次扫描返回了一些结果 请参阅以下 JavaScript const daysBack days gt let date new Date dat
  • 将 TextBox.Value 转换为 Double 到 VBA (Excel 2013)

    我的表单中有文本框 用户可以在其中输入值 在 VBA 中 我需要将值从字符串转换为双精度 我这样做是这样的 Private Sub UserForm Initialize some code Dim new value As Double
  • 我们可以在 orientdb 中更新 EDGE 吗?

    是否有可能获得一个在 orientdb 中更新插入边缘的示例 如果它不存在 有没有办法检查边缘是否存在 如果存在 则只需更新边缘 否则创建新边缘 我使用的是 Orientdb 2 1 13 版本 谢谢 通过 SQL 您可以使用基本的 UPD
  • 如何用jsoup解析简单的html代码?安卓

    这是我的html代码的一部分 div class entry themeform h3 dr James 8211 opiekun naukowy h3 p a href http www page com picture jpg img
  • 将 UILabel 添加到 UIToolbar

    我正在尝试向我的工具栏添加标签 按钮工作得很好 但是当我添加标签对象时 它崩溃了 有任何想法吗 UIBarButtonItem setDateRangeButton UIBarButtonItem alloc initWithTitle S
  • 如何将 Android 上的 Vimeo 和具有特定用户访问权限的网站集成

    我们购买了一个用于视频流的 VIMEO 帐户 我们的网站和 Android 应用程序正在运行 并且对内容的用户级别限制由 firebase 生成的令牌管理 现在我想集成 VIMEO 视频以供我们的网站和应用程序访问 并希望确保所需用户只能使