Youtubeのv3 APIでoriginパラメータを最近使用していました。私がそれを含まないときは、再生を制限したVevoタイプのビデオ以外はすべて再生することができます。私がVevoビデオを再生しようとすると、ビデオには再生が制限されているというメッセージが表示されます。Youtube v3 API originパラメータが機能しません
その他の回答では、起源パラメータをhttps://www.example.comに設定すると、Vevoビデオを再生できるはずです。しかし、私がこれを行いVevoビデオを再生しようとすると、ビデオは黒くなり、再生が制限されているというメッセージさえありません。また、Javascriptコマンドを評価して通常の動画を再生しようとすると、何も起こりません。何らかの理由で実際に動画をクリックして再生する必要があります。起源のパラメータであれ、他の方法であれ、YoutubeのAPIを通じてVevoの動画を再生する方法を知っている人がいれば、私はそれを感謝します。ここで
はプレーヤーのための私のHTMLコードです:
<!DOCTYPE html>
<html>
<head>
<style>
* { margin: 0; padding: 0; }
html, body { width: 100%; height: 100%; }
</style>
</head>
<body>
<div id="player" webkit-playsinline></div>
<script src="https://www.youtube.com/iframe_api"></script>
<script>
var player;
YT.ready(function() {
player = new YT.Player('player', %@);
window.location.href = 'ytplayer://onYouTubeIframeAPIReady';
});
function onReady(event) {
window.location.href = 'ytplayer://onReady?data=' + event.data;
}
function onStateChange(event) {
window.location.href = 'ytplayer://onStateChange?data=' + event.data;
}
function onPlaybackQualityChange(event) {
window.location.href = 'ytplayer://onPlaybackQualityChange?data=' + event.data;
}
function onPlayerError(event) {
window.location.href = 'ytplayer://onError?data=' + event.data;
}
</script>
</body>
</html>
、ここでは、私が選手を初期化するために、それのパラメータを追加するために使用しているコードです。
fileprivate func loadWebViewWithParameters(_ parameters: YouTubePlayerParameters) {
// Get HTML from player file in bundle
let rawHTMLString = htmlStringWithFilePath(playerHTMLPath())!
// Get JSON serialized parameters string
let jsonParameters = serializedJSON(parameters as AnyObject)!
// Replace %@ in rawHTMLString with jsonParameters string
let htmlString = rawHTMLString.replacingOccurrences(of: "%@", with: jsonParameters)
// Load HTML in web view
webView.loadHTMLString(htmlString, baseURL: URL(string: "about:blank"))
}
fileprivate func playerHTMLPath() -> String {
return Bundle(for: self.classForCoder).path(forResource: "YTPlayer", ofType: "html")!
}
fileprivate func htmlStringWithFilePath(_ path: String) -> String? {
do {
// Get HTML string from path
let htmlString = try NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue)
return htmlString as String
} catch _ {
// Error fetching HTML
printLog("Lookup error: no HTML file found for path")
return nil
}
}
// MARK: Player parameters and defaults
fileprivate func playerParameters() -> YouTubePlayerParameters {
playerVars["origin"] = ("https://www.example.com") as AnyObject?
playerVars["playsinline"] = 1 as AnyObject?
playerVars["controls"] = 0 as AnyObject?
playerVars["showinfo"] = 0 as AnyObject?
return [
"modestbranding": 1 as AnyObject,
"height": "100%" as AnyObject,
"width": "100%" as AnyObject,
"events": playerCallbacks() as AnyObject,
"playerVars": playerVars as AnyObject
]
}
fileprivate func playerCallbacks() -> YouTubePlayerParameters {
return [
"onReady": "onReady" as AnyObject,
"onStateChange": "onStateChange" as AnyObject,
"onPlaybackQualityChange": "onPlaybackQualityChange" as AnyObject,
"onError": "onPlayerError" as AnyObject
]
}
私が試してみるべきexample.com以外のドメインはありますか?ここには別の問題がありますか?私がYoutube Playerのコードを入手したGithubはhttps://github.com/gilesvangruisen/Swift-YouTube-Playerで、Swift 3のコードはIssuesにあります。 loadHTMLStringでのベースURLパラメータとして