トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     youtubeカスタムプレイヤー埋め込みで*** セキュリティ Sandbox 違反 ***が出る
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
maki_an
Åê¹ÆNo.45736
投稿日時: 2010-9-13 13:40
半人前
居住地: 東京
投稿: 47
使用環境:
FlashCS5

WIN7

DELL PentiumD 1.5Ghz
youtubeカスタムプレイヤー埋め込みで*** セキュリティ Sandbox 違反 ***が出る
こんにちは。flashcs5,as3環境下で、
swfにyoutubeを読み込みたいのですがうまくいかず困っております。

*** セキュリティ Sandbox 違反 ***
SecurityDomain 'http://s.ytimg.com/yt/swf/~~~~~~~~~~~.swf' が互換性のないコンテキスト 'http://www.youtube.com/cp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=?version=3&enablejsapi=1' にアクセスを試みました。
となり、一瞬表示されるものの、ローダーMCを画面の中心に移動するスクリプトが実行された時点で消えてしまいます。

幅がブラウザウインドウの大きさに合わせて
可変するswfの中で、youtubeのローダー(インスタンス名はmc)を常に中央に配置したいのですが、中央配置のスクリプトを実行するとyoutube画面が消えて、画面が真っ白になります。

mcの1フレーム目のスクリプトです。
おそらくここに問題があると思うのですが、
Security.allowDomain("http://www.youtube.com/");
を入れているのに、なぜエラーが出るのか全く分かりません。

Security.allowDomain("http://www.youtube.com/");
Security.loadPolicyFile("http://www.youtube.com/crossdomain.xml");

var player:Object;
var loader:Loader = new Loader();
var request:URLRequest = new URLRequest("http://www.youtube.com/cp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=?version=3&enablejsapi=1");
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
loader.load(request);

function onPlayerReady(event:Event):void
{
	player = loader.content;
	var playerwidth;
	playerwidth = 352;
	player.setSize(playerwidth,playerwidth/16*9+32 );
	player.cueVideoById(parentMc.video_id, 0, "medium");
}


function onLoaderInit(event:Event):void
{
	loader.content.addEventListener("onReady", onPlayerReady);
	loader.content.addEventListener("onPlaybackQualityChange",onVideoPlaybackQualityChange);
	addChild(loader);
}


function onVideoPlaybackQualityChange(event:Event):void
{
	player.setPlaybackQuality("medium");
	// Event.data contains the event parameter, which is the new video quality;
	trace("video quality:", Object(event).data);
}


Security.allowDomain("http://www.youtube.com/");
Security.loadPolicyFile("http://www.youtube.com/crossdomain.xml");

この2行が記載されていればセキュリティ問題はクリア
出来ると思うのですがうまくいきません。

セキュリティエラーが出ない方法についてご存知の方、お教えください。よろしくお願いいたします。
ひろゆき
Åê¹ÆNo.45737
投稿日時: 2010-9-13 13:45
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
思い込みで物事を進めない方が良いように思います。

Security.allowDomain("www.youtube.com");

これだけで問題が解決するかどうかは分かりませんが、明らかに間違っている部分です。

あと、スクリプトは直に記述されると読みづらいので、
[code][/code]で囲みましょう


----------------
質問する際は、回答者に具体的な情報を与えてください。

maki_an
Åê¹ÆNo.45740
投稿日時: 2010-9-13 14:10
半人前
居住地: 東京
投稿: 47
使用環境:
FlashCS5

WIN7

DELL PentiumD 1.5Ghz
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
早速のご返信ありがとうございます。
しかも、問題の箇所を1行に絞って教えていただけるなんて。
何日も一人で悩んでいるので、とても救われた気持ちです。
本当にありがとうございます。

何か思い込みがあるんですね。
何だろう。試しにその1行をはずしてみました。
しかし、同じエラーが出ました。

また、この1行自体が何か文法を無視したものかと思い
別の新規flaをつくり、その1行のみを記載してパブリッシュ
しましたが、特にエラーは出ませんでした。

もしや、エラーに出ている
http://s.ytimg.com/

もallowDomainに加えた方が良いのかと思い加えましたが、
Security.allowDomain("http://www.youtube.com/","http://s.ytimg.com/");
同じエラーが出ました。

もしかしたらallowDomainの意味をそもそも思い違えているのでは
と思い、
調べました。

◆指定したドメインのswf、htmlファイルから、このswf内のオブジェクト/変数へのアクセスを許可、とあります。
http://www.youtube.com/
から自分のswfオブジェクトへのアクセスを
許可、だから間違っていない気がしますが、
どこかが必ず間違っているのですね。

引き続きこの1行に絞って調べてみたいと思います。
ひろゆき
Åê¹ÆNo.45741
投稿日時: 2010-9-13 14:15
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
よく読みましょう。

×
Security.allowDomain("http://www.youtube.com/");


Security.allowDomain("www.youtube.com");


----------------
質問する際は、回答者に具体的な情報を与えてください。

maki_an
Åê¹ÆNo.45742
投稿日時: 2010-9-13 14:32
半人前
居住地: 東京
投稿: 47
使用環境:
FlashCS5

WIN7

DELL PentiumD 1.5Ghz
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
なるほど。「ドメイン」ですものね。
差し替えてみました。しかし同じようにエラーメッセージが出ます。
*** セキュリティ Sandbox 違反 ***
SecurityDomain 'http://s.ytimg.com/yt/swf/cpb-vflm8s6tL.swf' が互換性のないコンテキスト 'http://www.youtube.com/crossdomain.xml' にアクセスを試みました。


しかし、少なくともここは間違っていたので、教えていただき本当によかったです。ひろゆきさま、ありがとうございます。

引き続き考えてみたいと思います。
ひろゆき
Åê¹ÆNo.45744
投稿日時: 2010-9-13 15:01
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
カスタムプレイヤーを用いるのであれば、その旨を明記すべきだと思いますが。

とりあえず、カスタムプレイヤーではなく通常のプレイヤー表示をさせてみました。
YouTube API


----------------
質問する際は、回答者に具体的な情報を与えてください。

maki_an
Åê¹ÆNo.45750
投稿日時: 2010-9-13 16:28
半人前
居住地: 東京
投稿: 47
使用環境:
FlashCS5

WIN7

DELL PentiumD 1.5Ghz
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
>その旨明記
すみません。その通りです。

通常のプレイヤーでの動作、拝見しました。
私のソースを流用して提示してくださりありがとうございました。
分かりやすく、私の環境でも、カスタムプレイヤーではなく通常のプレイヤーなら再生出来ることが確認できました。

どうすればカスタムプレイヤーを埋め込むことが出来るのか、
引き続き方法を模索してみたいと思います。


ひろゆき
Åê¹ÆNo.45754
投稿日時: 2010-9-13 16:51
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
柊さんがサンプルを作ってくださったので、ご紹介しておきます。

YouTube API


----------------
質問する際は、回答者に具体的な情報を与えてください。

Åê¹ÆNo.45761
投稿日時: 2010-9-13 22:11
新米
居住地:
投稿: 4
使用環境:
WinXP, Mac0S10.6, Flash CS3, Flash CS5.5, Flex 3 SDK, Flex 4 SDK
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
横から失礼します。

自分の不注意により、こちらの質問とは知らずにサンプルを作ってしまったので、少しだけ解説と言うよりヒントをお渡ししたいと思います。

セキュリティSandBox違反に関しては、下記のサイトを読まれると、解決するかもしれません。自分は解決したんで多分行けると思います。

http://d.hatena.ne.jp/nitoyon/20071112/crossdomain_img

あと、Youtubeのカスタムプレーヤーに関しては、maki_anさんが使おうとしてるものは少々種類が違うものです。

「Youtube カスタムプレーヤ」でググると沢山出てくるので、探し当ててみてください。なお、ヒントとしては、「Youtubeアカウントを持ってないとできない」です。(答えみたいなものですが)
maki_an
Åê¹ÆNo.45781
投稿日時: 2010-9-14 17:12
半人前
居住地: 東京
投稿: 47
使用環境:
FlashCS5

WIN7

DELL PentiumD 1.5Ghz
Re: youtube埋め込みで*** セキュリティ Sandbox 違反 ***が出る
返信に間が空きすみませんでした!
ひろゆきさん、お久しぶりです。柊さんのサンプルを教えていただきありがとうございます。
柊さんはじめまして。ありがとうございます。
wonderflのサンプル、拝見しました。

var context:LoaderContext = new LoaderContext(true);
を入れてみました。



import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.Loader;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.Security;

var player:Object;
var loader:Loader;
var context:LoaderContext = new LoaderContext(true);
//(1)自分のカスタムプレイヤー
//var youtubePath:String = "http://www.youtube.com/cp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=";

//(2)柊さんのサンプルコードのカスタムプレイヤー
var youtubePath:String = "http://www.youtube.com/cp/vjVQa1PpcFPdkoibZPNE8K23dvrQAu8KI4oHUH78i3M=";

//(3)普通プレイヤー
//var youtubePath:String = "http://www.youtube.com/v/ZL5d6vPEhMw?version=3&enablejsapi=1";
Security.allowDomain("www.youtube.com");
Security.allowDomain("s.ytimg.com");
Security.loadPolicyFile("http://www.youtube.com/crossdomain.xml");
loader = new Loader();
addChild(loader);
loader.x = 0;
loader.y = 0;

//loader.scaleX = loader.scaleY = 1.0;
loader.contentLoaderInfo.addEventListener(Event.INIT, initialize, false, 0, true);
loader.contentLoaderInfo.addEventListener("complete", completeHandler);
//loader.contentLoaderInfo.addEventListener("ioError", ioErrorHandler);

loader.load(new URLRequest(youtubePath),context);

function initialize(evt:Event):void
{
	//init
}

function completeHandler(evt:Event):void
{
	player = loader.content;
}
stop();


コード中の(3)普通プレイヤーで再生すると、問題なく再生できました。
が、(1),(2)のいずれもctrl+enterで再生直後にエラーが出ます。
エラーが出てもyoutubeの再生はされるのですが、
ある程度の大きさまでウインドウを縮めると、
「横幅を可変にして、いつもプレイヤーが画面の中心に来るようにする」というスクリプトが無効になり、縮んでしまったり、中央配置が効かなくなったりします。

引用:

あと、Youtubeのカスタムプレーヤーに関しては、maki_anさんが使おうとしてるものは少々種類が違うものです。

「Youtube カスタムプレーヤ」でググると沢山出てくるので、探し当ててみてください。なお、ヒントとしては、「Youtubeアカウントを持ってないとできない」です。(答えみたいなものですが)

これについては、柊さんがサンプルでお使いのカスタムプレイヤーと種類が違うということですよね。
私が使っているのは
http://internet.watch.impress.co.jp/cda/news/2007/07/20/16397.html
にある、「右側に関連する8つの動画をサムネイル表示する長方形で大きめのレイアウト」だと思っています。
これは、サインインが必要だし、是のことだと思います。

おそらく、youtubeアカウントを持っている人が、プレイリストを作ってそこから書き出しされたurlを使わないといけない、ということでしょうか。

もしかして、このカスタムプレイヤーではどうしてもsandboxエラーが出てしまい、中央配置などの複雑な指示が消えてしまうため、自分の思うような組み込み方は出来ないのではないか・・・などと考え初めています。

が、それも思い込みかもしれないので、粘ってみたいと思います。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops