2016-10-17 57 views
1

curlを使用してYoutubeAPi経由でIDで動画を削除しようとしています。Curl経由でYoutube Apiを呼び出す際の問題:CURLE_URL_MALFORMATエラー

次のコードでは、curl_errno()はCURLE_URL_MALFORMATエラーを返します。

$link = urlencode("https://www.googleapis.com/youtube/v3/videos?id=my_Video_ID&key=my_API_KEY"); 

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $link); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 
    $test = curl_errno($ch); 
    echo $test . "\n"; 
    $result = json_decode($result); 
    curl_close($ch); 
    return $result; 

コードにはどのような問題がありますか?

答えて

1

URL(urlencode)をエンコードする必要はありません。 URL文字列を$link変数に代入するだけです。 (。docsを読む)

はしかし、パラメータ値をエンコードするために、良いアイデアです:

test.phpを

$id = urlencode('AAAAABBBCCC'); 
$key = urlencode('AAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCC'); 
$link = "https://www.googleapis.com/youtube/v3/videos?id=$id&key=$key"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $link); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
var_dump($result); 

テスト

php test.php 

出力

string(238) "{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "Login Required", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "Login Required" 
} 
} 
" 

実際にAPIが動作します。今、あなたはofficial docsで説明したように、正しいidkeyパラメータ認証トークンを設定する必要があります。

あなたはすべての挿入、更新、および 削除要求のための認証トークンを送信する必要があります。

+0

ご協力ありがとうございますが、引き続き同じ問題があります。 –

+0

@AugusteLarrivé、よろしいですか?私は答えを更新しました。答えに書かれているとおりにスクリプトを実行しようとしてください。 –

+0

私はあなたとまったく同じスクリプトを実行し、同じ出力を –

関連する問題