2016-12-19 13 views
1

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パラメータとして

答えて

1

使用https://www.youtube.com/

webView.loadHTMLString(htmlString, baseURL: URL(string: "https://www.youtube.com/")) 

その後、あなたのplayerParametersのFUNCから原点のparamを削除しようとする - この行:

playerVars["origin"] = ("https://www.example.com") as AnyObject? 

は、それは私のために、このように動作します。

関連する問題