在 Web 应用程序和移动应用程序中嵌入私人 Vimeo 视频——Ionic/Angular

mat*_*ock 6 vimeo vimeo-api ionic-framework angular

我有一种情况,我们既是包含私人视频的 Vimeo 专业帐户的所有者,又是我们嵌入这些视频的 Ionic/Angular 应用程序的开发者。

由于我们不希望任何人都能够在任何地方嵌入这些视频......在部署到我们的网络应用程序时,我可以简单地在我们的 Vimeo 帐户中选择“仅将这些视频嵌入特定域”的选项并提供域我们的网络应用程序。这工作得很好。

部署到 iOS/Android 时,我没有要添加到“白名单”的特定域,因此我们在嵌入这些视频的应用程序中收到一条错误消息,内容为“抱歉,因为它隐私设置,此视频无法在此处显示。”

我的问题是在阅读了 Vimeo 文档并在网上搜索之后,我似乎找不到任何关于这个特定场景的例子。

似乎我不需要整个 OAuth 的东西,因为我并不是真的要求我的用户使用他们自己的 Vimeo 帐户或让我们访问他们帐户上的任何内容。

我只是想让我们的视频在 Vimeo 上保持私密,但也能够以某种方式将它们嵌入我们的网络和移动应用程序中。

在这里采取的适当路径是什么?我愿意接受任何和所有建议。就目前而言,我暂时将我们的视频设置回“嵌入任何地方”,以便它适用于我们现有的用户,但我真的希望能够将其设置回仅特定域,然后将移动端确定为好。

感谢您的任何帮助或指导!

编辑:我应该说到目前为止我最接近的是这个页面上的这个小片段:https : //developer.vimeo.com/api/authentication那里说...

"注意:如果您想在您自己的网站上嵌入您自己的视频(并且仅使用 Vimeo 进行转码和托管服务),您不需要使用 API 来验证您的应用程序。您需要做的就是生成一个新的令牌“从您的应用程序页面,并将其包含在您的应用程序中。这是一种特殊情况,在这种情况下,您既是最终用户又是应用程序所有者。而且因为您很特别,所以您可以跳过本文档的其余部分。”

这似乎正是我想要的,但是没有关于如何做到这一点的进一步说明。

Tho*_*hor 5

如果您只需要将视频嵌入到网站中,您可以在 Vimeo 上将视频设为私有,并授权将视频嵌入到您的网站中,方法是转至https://vimeo.com/settings/videos/upload_defaults,设置“您的视频可以嵌入到哪里?” 选项设置为“仅我选择的网站”,然后使用“添加域”按钮添加您网站的域。

这适用于网站,但不适用于应用程序(除非您的应用程序包含指向您网站上的页面而不是实际嵌入到您的应用程序中的视频的 webview 或 iframe)。在这种情况下,一个可能的解决方案是使用视频设置中的分发选项 ( https://vimeo.com/manage/{assetID}/distribution )。在页面底部附近,您会发现“视频文件链接”部分,其中将为您提供下载或流式传输视频的链接。这些是实际视频的链接,因此无法像通常的嵌入代码链接一样进行控制,因此在使用它们的地点和时间时要小心。

如果您确实需要进行 API 调用,我自己也遇到了一些问题,因此只能提供有限的帮助。目前,我能够对 Vimeo 的 API 端点进行 API 调用(下面包含 PHP 示例),提供我的访问令牌,并获得包含所请求信息的结果,但前提是我使用的访问令牌是我不久前生成的访问令牌对于一个旧的应用程序。我生成的任何新访问令牌(无论是在我帐户中的新应用程序还是旧应用程序中,似乎都不重要)都将不起作用。对于使用 Vimeo 网站上概述的 OAuth 2.0 流程检索的任何访问令牌也是如此。极其令人沮丧...

Vimeo 建议的所有 OAuth 2.0 API 工作流程似乎都是为了授予开发人员访问最终用户视频的权限,而不是授予最终用户访问开发人员视频的权限。

    $albumsVideosURL = "https://api.vimeo.com/users/$userID/albums/$albumID/videos?&per_page=2";

    $headers = array( 
        "Content-type: application/json", 
        "Accept: application/vnd.vimeo.*+json;version=3.4", 
        "Authorization: Bearer " . $access_token,
        "scope: public private video_files",
    );

    $ch = curl_init($albumsVideosURL);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);  
    $data = curl_exec($ch);
    curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

编辑:

我终于成功了!并且无需安装 Vimeo 的 PHP SDK 库!

这取决于身份验证类型!我一直在尝试BasicOauth,但它需要设置为Bearer!我编辑了上面示例中的 PHP 代码以反映我当前的理解,并且我将在下面添加一个 JavaScript 示例。看起来您也不需要在标头中包含内容类型、接受或范围。您真正需要的只是身份验证,并且身份验证必须设置为 Bearer。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var output = this.responseText;
        console.log(output);
    }
};
xmlhttp.open("GET", endpoint, true);
xmlhttp.setRequestHeader("Authorization", "Bearer " + access_token);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)

我真的希望 Vimeo 支持技术人员刚刚打开这个,而不是反复告诉我设置标题而不告诉我要使用什么类型......哦,好吧,最后到了。