我遇到的情况是,我们既是包含私人视频的Vimeo专业版帐户的所有者,又是我们嵌入这些视频的Ionic / Angular应用程序的开发者。
由于我们不希望任何人都可以将这些视频嵌入到任何地方...当部署到我们的Web应用程序时,我只需在Vimeo帐户中选择“仅将这些视频嵌入到特定域”的选项,然后提供我们的网络应用程序的域。这很正常。
当部署到iOS / Android时,我没有要添加到“白名单”的特定域,因此我们在应用程序中嵌入了这些视频时收到一条错误消息,提示“对不起,由于其隐私设置,该视频无法在此处显示。”
我的问题是在阅读了Vimeo文档并在线搜索后,我似乎找不到这种特殊情况的任何示例。
似乎不需要全部OAuth,因为我并没有真正要求用户使用自己的Vimeo帐户或让我们访问其帐户中的任何内容。
我只是希望能够将我们的视频保留在Vimeo上,而且还可以以某种方式将其嵌入到我们的网络和移动应用程序中。
在这里采取的适当路径是什么?我愿意接受任何建议。就目前而言,我已将视频暂时设置为“嵌入到任何地方”,以使其对我们现有的用户有效,但是我真的很希望能够将其设置为仅特定域,然后将移动端设置为好吧。
感谢您的帮助或指导!
编辑:我应该说,到目前为止我最接近的是此页面上的这个小片段,这里是https://developer.vimeo.com/api/authentication,上面写着...
“注意:如果要在自己的网站上嵌入自己的视频(并且仅使用Vimeo进行转码和托管服务),则无需使用API来验证您的应用程序。您要做的就是生成来自应用页面的新令牌并将其包含在应用程序中。在特殊情况下,您既是最终用户又是应用程序所有者。由于您很特殊,因此可以跳过本文的其余部分。” < / p>
这似乎正是我想要的,但是关于如何做到这一点,实际上并没有进一步的说明。
答案 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支持技术刚刚开始,而不是反复告诉我设置标题集而又不告诉我使用哪种类型...哦,好了,到最后。