• 18-01-2016, 00:20:41
    #1
    Üyeliği durduruldu
    Arkadaşlar bende bir script var daha doğrusu dosya içeriğini ekliyorum hemen.

    <?php
    require_once 'config.php';
    require_once 'includes/DB.php';
    // create an object of class DB.
    $db = new DB;
    include("baglan.php");
    
    	 
    	 
    	 
    	 
    $_POST['videoFile'] = $dosya_adi;
    
    
    
    
    
    	
    $base_name=str_replace(".mp4","",$_POST['videoFile']);	
    	if($_POST['videoFile'] != ''){
    	    $fileSize = filesize($_POST['videoFile']);
    	    $fileType = "video/mp4";
    	    $fileName = $base_name;
    		$targetDir = "";
    		$targetFile = $targetDir . $fileName;
    		$allowedTypeArr = array("video/mp4", "video/avi", "video/mpeg", "video/mpg", "video/mov", "video/wmv", "video/rm");
    		$videoFilePath=$_POST['videoFile'];		
    		$db->insert($videoTitle,$videoDesc,$videoTags,$videoFilePath);
    		
    	}else{
    		header('Location:'.BASE_URI.'index.php?err=bf');
    		exit;
    	}
    
    
    // get last video data
    $result = $db->getLastRow();
    
    
    
    /*
     * You can acquire an OAuth 2.0 client ID and client secret from the
     * Google Developers Console <https://console.developers.google.com/>
     * For more information about using OAuth 2.0 to access Google APIs, please see:
     * <https://developers.google.com/youtube/v3/guides/authentication>
     * Please ensure that you have enabled the YouTube Data API for your project.
     */
    
    $client = new Google_Client();
    $client->setAuthConfigFile('client_secrets.json');
    $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php');
    $client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);
    
    if (isset($_GET['code'])) {
    	//var_dump($_GET['code']);
    	
    
    	$client->authenticate($_GET['code']);
    	$_SESSION['token'] = $client->getAccessToken();
    
    	header('Location: ' . REDIRECT_URI);
    }
    if (isset($_SESSION['token'])) {
    	var_dump($_SESSION['token']);
    	echo $_SESSION['token'];
    	$client->setAccessToken($_SESSION['token']);
    }
    
    $htmlBody = '';
    // Check to ensure that the access token was successfully acquired.
    if ($client->getAccessToken()) {
      try{
        // REPLACE this value with the path to the file you are uploading.
        $videoPath = $result['video_path'];
    
        // Create a snippet with title, description, tags and category ID
        // Create an asset resource and set its snippet metadata and type.
        // This example sets the video's title, description, keyword tags, and
        // video category.
        $snippet = new Google_Service_YouTube_VideoSnippet();
        $snippet->setTitle($result['video_title']);
        $snippet->setDescription($result['video_description']);
        $snippet->setTags(explode(",",$result['video_tags']));
    
        // Numeric video category. See
        // https://developers.google.com/youtube/v3/docs/videoCategories/list 
        $rand_kat = array("28","27","14","15","1","25","29","22","23","10","26","2","20","19","17");
     $rand_sayi = rand(0,count($rand_kat)-1);
     $rand_kategori = $rand_kat[$rand_sayi];
    	$snippet->setCategoryId($rand_kategori);
    
        // Set the video's status to "public". Valid statuses are "public",
        // "private" and "unlisted".
        $status = new Google_Service_YouTube_VideoStatus();
        $status->privacyStatus = "public";
    
        // Associate the snippet and status objects with a new video resource.
        $video = new Google_Service_YouTube_Video();
        $video->setSnippet($snippet);
        $video->setStatus($status);
    
        // Specify the size of each chunk of data, in bytes. Set a higher value for
        // reliable connection as fewer chunks lead to faster uploads. Set a lower
        // value for better recovery on less reliable connections.
        $chunkSizeBytes = 1 * 1024 * 1024;
    
        // Setting the defer flag to true tells the client to return a request which can be called
        // with ->execute(); instead of making the API call immediately.
        $client->setDefer(true);
    
        // Create a request for the API's videos.insert method to create and upload the video.
        $insertRequest = $youtube->videos->insert("status,snippet", $video);
    
        // Create a MediaFileUpload object for resumable uploads.
        $media = new Google_Http_MediaFileUpload(
            $client,
            $insertRequest,
            'video/*',
            null,
            true,
            $chunkSizeBytes
        );
        $media->setFileSize(filesize($videoPath));
    
        // Read the media file and upload it.
        $status = false;
        $handle = fopen($videoPath, "rb");
        while (!$status && !feof($handle)) {
          $chunk = fread($handle, $chunkSizeBytes);
          $status = $media->nextChunk($chunk);
        }
        fclose($handle);
    
        // If you want to make other calls after the file upload, set setDefer back to false
        $client->setDefer(false);
    	
    	// Update youtube video ID to database
    	$db->update($result['video_id'],$status['id']);
    	// delete video file from local folder
    	@unlink($result['video_path']);
    	
        $htmlBody .= "<p class='succ-msg'>Video have been uploaded successfully.</p><ul>";
    	$htmlBody .= '<embed width="400" height="315" src="https://www.youtube.com/embed/'.$status['id'].'"></embed>';
    	$htmlBody .= '<li><b>Title: </b>'.$status['snippet']['title'].'</li>';
    	$htmlBody .= '<li><b>Description: </b>'.$status['snippet']['description'].'</li>';
    	$htmlBody .= '<li><b>Tags: </b>'.implode(",",$status['snippet']['tags']).'</li>';
        $htmlBody .= '</ul>';
    	$htmlBody .= '<a href="logout.php">Logout</a>';
    
      } catch (Google_ServiceException $e) {
        $htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
            htmlspecialchars($e->getMessage()));
      } catch (Google_Exception $e) {
        $htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>', htmlspecialchars($e->getMessage()));
    	$htmlBody .= 'Please reset session <a href="logout.php">Logout</a>';
      }
      
      $_SESSION['token'] = $client->getAccessToken();
    } else {
    	// If the user hasn't authorized the app, initiate the OAuth flow
    	$state = mt_rand();
    	$client->setState($state);
    	$_SESSION['state'] = $state;
      
    	$authUrl = $client->createAuthUrl();
    	$htmlBody = <<<END
    	<h3>Authorization Required</h3>
    	<p>You need to <a href="$authUrl">authorize access</a> before proceeding.<p>
    END;
    }}
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
    <title>Upload video to YouTube using PHP</title>
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    </head>
    <body>
    <div class="youtube-box">
    	<h1>Upload video to YouTube using PHP</h1>
    	<div class="video-up"><a href="<?php echo BASE_URI; ?>">New Upload</a></div>
    	<div class="content">
    		<?php echo $htmlBody; ?>
    	</div>
    </div>
    </div>
    </body>
    </html>
    daha önce bu dosya ile 1 upload yaptım sonra 2. yi yapmayı denedim yapmadı. hata verdi token bitti hatası dışarı çıktım geldim tekrar denedim şimdide şu hatayı veriyor



    ne yapmalıyım lütfen yardım edin bu akşam da bitmezse bu proje kafayı yicem artık. birtek youtube upload sıkıntılı bende düzenli bir performans alamıyorum bir türlü.

    client.php de 818. satırdada şu fonksiyon var. ne yapmalıyım niçin hata veriyor bu şey
    public function setAuthConfig($config)
      {
        if (is_string($config)) {
          if (!file_exists($config)) {
            throw new InvalidArgumentException('file does not exist');
          }
  • 18-01-2016, 21:23:42
    #2
    Merhaba @byjameson;

    anladığım kadarıyla 'yüklenecek dosya bulunamadığı için' hata alıyor olabilirsin. (Yani Yüklediğin video dosyasını bulamıyordur belki)

    Ama 818. satırın kodlarına bakınca, fonksiyon ve parametreye config demişler, belli ki bir ayar olabilir. ve file_exits ile o verilen parametre adlı dosyanın olup olmadığını kontrol etmişler, dosya olmayınca haliyle hatayı yakala-fırlat yapmışlar.

    Şimdi o kodlara baktıktan sonra aklıma şöyle bir şey geldi, Belki bu script ayarlarını bir dosyada saklıyodur.
    auth key, auth id lerini bi dosyada saklıyor olabilir. (SetAuthConfigFile Metodu var , orada parametre olarak yollanan dosyayı bi kontrol et ).

    $client->setAuthConfigFile('client_secrets.json');
    php dosyanın olduğu yerde client_secrets.json adlı bi dosya varmı, varsa içeriği nedir, bi incele istersen.

    Cevabını Bekliyorum. Kolay Gelsin.