在网络应用程序和移动应用程序中嵌入私人Vimeo视频-Ionic / Angular

时间:2018-10-29 16:57:36

标签: angular ionic-framework vimeo vimeo-api

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

由于我们不希望任何人都可以将这些视频嵌入到任何地方...当部署到我们的Web应用程序时,我只需在Vimeo帐户中选择“仅将这些视频嵌入到特定域”的选项,然后提供我们的网络应用程序的域。这很正常。

当部署到iOS / Android时,我没有要添加到“白名单”的特定域,因此我们在应用程序中嵌入了这些视频时收到一条错误消息,提示“对不起,由于其隐私设置,该视频无法在此处显示。”

我的问题是在阅读了Vimeo文档并在线搜索后,我似乎找不到这种特殊情况的任何示例。

似乎不需要全部OAuth,因为我并没有真正要求用户使用自己的Vimeo帐户或让我们访问其帐户中的任何内容。

我只是希望能够将我们的视频保留在Vimeo上,而且还可以以某种方式将其嵌入到我们的网络和移动应用程序中。

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

感谢您的帮助或指导!

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

“注意:如果要在自己的网站上嵌入自己的视频(并且仅使用Vimeo进行转码和托管服务),则无需使用API​​来验证您的应用程序。您要做的就是生成来自应用页面的新令牌并将其包含在应用程序中。在特殊情况下,您既是最终用户又是应用程序所有者。由于您很特殊,因此可以跳过本文的其余部分。” < / p>

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

1 个答案:

答案 0 :(得分:3)

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

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

如果您确实需要进行API调用,则我遇到了一些问题,因此只能提供有限的帮助。目前,我能够对Vimeo的API端点进行API调用(下面包括PHP示例),提供我的访问令牌,并得到包含所请求信息的结果,但是仅当我使用的访问令牌是I 。我生成的任何新访问令牌(无论是在帐户中的新应用还是旧应用中,似乎都没有关系)都将无法使用。对于使用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);

编辑:

我终于开始工作了!而且无需安装Vimeo的PHP SDK库!

它归结为Authentication类型!我一直尝试使用 Basic Oauth ,但是需要将其设置为 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();

我真的希望Vimeo支持技术刚刚开始,而不是反复告诉我设置标题集而又不告诉我使用哪种类型...哦,好了,到最后。