如何嵌入GDrive的私人视频

时间:2014-01-06 21:35:00

标签: video-streaming google-drive-api

我有一个网站向人们收费以观看视频。我正在尝试使用“谷歌驱动器”作为视频的流服务器。我创建了一个帐户服务和私钥,我正在使用php库,如下所示:     

define('ID_VIDEO', '0B9SXFdezvkZtOE9xVlVNR3U0a1U');

const CLIENT_ID = 'XXXXXXXXXXXXX.apps.googleusercontent.com';
const SERVICE_ACCOUNT_NAME = 'XXXXXXXXXXXXXX@developer.gserviceaccount.com';
const KEY_FILE = 'XXXXXXXXXXXXXXXXXXXXXX-privatekey.p12';

$client = new Google_Client();
$client->setApplicationName("JVideos");

session_start();
if (isset($_SESSION['token'])) {
 $client->setAccessToken($_SESSION['token']);
}

// Load the key in PKCS 12 format (you need to download this from the
// Google API Console when the service account was created.
$key = file_get_contents(KEY_FILE);
$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/drive'),
$key)
);

$client->setClientId(CLIENT_ID);

$service = new Google_DriveService($client);
$file = $service->files->get(ID_VIDEO);
$access_toke = json_decode($client->getAccessToken(), TRUE);
$access_toke = $access_toke['access_token'];
?>
<embed width="100%" height="100%" name="plugin" src="<?= urldecode($file['embedLink']);?>&access_token=<?= $access_toke;?>" type="application/x-shockwave-flash" >

问题是:如何在没有任何人登录谷歌的情况下将此视频嵌入我的网站,只需在上面的代码中通过此API执行此身份验证即可查看该视频。当我执行此代码时,谷歌返回我必要的登录。

由于

2 个答案:

答案 0 :(得分:0)

如果文件是共享“链接可以查看的任何人”或“公众可以查看”,则代码应该正常工作。

用户的浏览器需要访问该文件来呈现视频,就像您的服务器已经完成获取fileID一样。

我建议使用“有链接的任何人都可以查看”权限,以便视频不会在搜索结果中意外显示。

答案 1 :(得分:0)

我尝试过的方式不适合不希望公开显示视频的网站,也不希望用户拥有Google帐户来观看视频。更好的方法是使用Google云端存储而不是使用Google云端硬盘。

要完成此任务,请先创建云存储帐户并生成.pem文件,请参阅以下链接:https://developers.google.com/storage/docs/accesscontrol#Signed-URLs

在此链接上尝试此代码后:https://stackoverflow.com/a/20817078/1018568

这种方法对我来说效果很好。