2012-02-28 20 views
0

Facebookのキャンバスアプリケーションを開発しています。このアプリケーションには、ビデオをアップロードできる機能があります。ビデオをアップロードしてFacebookのURLを取得する方法

私はこのチュートリアル以下を考えています: Facebook Video upload documentation

をしかし、問題は、ユーザーが動画をアップロードするとき、私は私はそれを格納することができるようにアップロードした後、バックのFacebookから動画のURLを取得する必要があるということです私のデータベース。私のアプリケーションのユーザーが埋め込みプレーヤーを使用してアプリケーションを再生できるようにする必要があります。

これは可能ですか?

あなたが他の解決策を提案できない場合は、

答えて

1

公式チュートリアルでは、適切なGraph APIポイントをどのようにヒットしてビデオをアップロードするかを理解するのに役立ちます。しかし、明らかにFacebookのエンドポイントにフォームを直接提出しているため、フレームを制御していないため、そのまま使用することはできません。

Facebookの投稿と同様のコードに基づいてtutorialを書きましたが、CURLを使用してFacebookのエンドポイントに入らないようにしました。それは画像をアップロードするためのものでした。

同じコードを使用したが、わずかな変化と、それは代わりに動画をアップロードするために、あなたのコードは次のようになります。

<?php 
error_reporting(E_ALL & ~E_NOTICE); 
$app_id = "APP_ID"; 
$app_secret = "APP_SECRET"; 
$my_url = "REDIRECT_URI"; // mainly, redirect to this page 
$perms_str = "publish_stream"; 

$code = $_REQUEST["code"]; 

if(empty($code)) { 
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&scope=" . $perms_str; 
    echo("<script>top.location.href='" . $auth_url . "'</script>"); 
} 

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
. $app_id . "&redirect_uri=" . urlencode($my_url) 
. "&client_secret=" . $app_secret 
. "&code=" . $code; 
$response = file_get_contents($token_url); 
$p = null; 
parse_str($response, $p); 
$access_token = $p['access_token']; 
$graph_url= "https://graph-video.facebook.com/me/videos?" 
     . "access_token=" .$access_token; 
if (!empty($_FILES)) { 
    $params = array(); 
    if(isset($_POST['title'])) { 
     $params['title'] = trim($_POST['title']); 
    } 
    if(isset($_POST['description'])) { 
     $params['description'] = trim($_POST['description']); 
    } 

    $uploaddir = './uploads/'; // Upload folder 
    $uploadfile = $uploaddir . basename($_FILES['source']['name']); 
    if (move_uploaded_file($_FILES['source']['tmp_name'], $uploadfile)) { 
     $params['source'] = "@" . realpath($uploadfile); 
    } 

    // Start the Graph API call 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$graph_url); 

    /* 
     Next option is only used for 
     user from a local (WAMP) 
     machine. This should be removed 
     when used on a live server! 
     refer:https://github.com/facebook/php-sdk/issues/7 
    */ 
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    $result = curl_exec($ch); 
    $decoded = json_decode($result, true); 
    var_dump(curl_error($ch)); 
    curl_close($ch); 
    if(is_array($decoded) && isset($decoded['id'])) { 
     /* 
      video is uploaded successfully: 
      1) show success message 
      2) optionally, delete video from our server 
     */ 
     $msg = "Video uploaded successfully: {$decoded['id']}"; 
    } 
} 
?> 
<!doctype html> 
<html> 
<head> 
<title>Upload</title> 
<style> 
label {float: left; width: 100px;} 
input[type=text],textarea {width: 210px;} 
#msg {border: 1px solid #000; padding: 5px; color: red;} 
</style> 
</head> 
<body> 
<?php if(isset($msg)) { ?> 
<p id="msg"><?php echo $msg; ?></p> 
<?php } ?> 
<form enctype="multipart/form-data" action="" method="post"> 
    <p><label for="title">Title</label><input type="text" name="title" value="" /></p> 
    <p><label for="description">Description</label><input type="text" name="description" value="" /></p> 
    <p><label for="source">Video</label><input type="file" name="source" /></p> 
    <p><input type="submit" value="Upload" /></p> 
</form> 
</body> 
</html> 

そして、ここではノートのカップルです:

  • で述べたようにチュートリアル、これはデモだけです!あなたはではありませんライブアプリでコードを使用してください!
  • 私はここでCURLエラーを処理していません...しかし、あなたはすべきです!良いスタート地点は、私はあなたはまだビデオ情報を読み込み、データを取得するためにuser_videosの許可が必要です動画の説明の代わりに、テキストinput
  • ためtextareaを使用する必要がありますね公式PHP-SDK code
  • だろうあなたが必要です
+1

ありがとうございました – ajaybc

+0

@ajaybcようこそ! – ifaour

2

Have Facebookのドキュメントをご覧ください!ここで

はあまりにもあなたを助けるリンクです:https://developers.facebook.com/docs/reference/api/video/

は、テスト・ビデオと返されprint_rすべてをアップロードします。ビデオIDが必要です。コードを更新して動画IDを取得し、グラフAPIを使用して動画IDに関する情報を取得します。

https://developers.facebook.com/tools/explorer/?method=GET&path=2031763147233

その後、あなたは、単にビデオのembed_htmlセクションをつかむことができますし、どこかでそれを埋め込む:それはこのような何かを返します。

申し訳ありません申し訳ありませんが、私はもっと助けになることはできませんでした。ビデオAPIの返品に関する情報は見つかりませんでしたが、IDがあると仮定しています。あなたはそれを調べるためにそれをテストしなければならないでしょう。

+1

ありがとうございます。しかし、私のニーズに合った@ifaourの答えが見つかりました – ajaybc