Php Facebook.init方法未执行
我是一个使用Facebook Graph API进行AS3的不速之客。我有一个Flash游戏,我的想法是把它上传到Facebook上,一切似乎都很好(当进入Facebook应用程序时,swf显示得非常完美,我可以将Facebook用户id、用户名和分数发布到游戏所在服务器的数据库中。我打算游戏自动将他/她所获得的分数发布到用户提要,但在进行了大量测试后,我发现该方法根本没有运行 以下是尝试将分数发布到用户新闻提要的.as文件的示例:Php Facebook.init方法未执行,php,flash,actionscript-3,Php,Flash,Actionscript 3,我是一个使用Facebook Graph API进行AS3的不速之客。我有一个Flash游戏,我的想法是把它上传到Facebook上,一切似乎都很好(当进入Facebook应用程序时,swf显示得非常完美,我可以将Facebook用户id、用户名和分数发布到游戏所在服务器的数据库中。我打算游戏自动将他/她所获得的分数发布到用户提要,但在进行了大量测试后,我发现该方法根本没有运行 以下是尝试将分数发布到用户新闻提要的.as文件的示例: package { import flash
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequestMethod;
import com.facebook.graph.Facebook;
import com.adobe.serialization.json.JSON;
import flash.utils.setTimeout;
import flash.net.navigateToURL;
public class GameOver extends MovieClip
{
private var user_id : String = "";
private var user_name : String = "";
// these are the api and secret keys you should be used to
var api_key:String="MY_API_KEY";
function GameOver()
{
var newscore = Main.scorenum;
finalScore.text = newscore;
getFacebookID();
Facebook.init(api_key);
var opts:Object = {scope:"publish_stream, email"};
Facebook.login(onLogin,opts);
}
function onLogin(session:Object, fail:Object):void
{
if(session!=null)
{
post();
}
else
{
trace("Login Failed");
}
}
public function post():void
{
var params:Object = new Object;
//params.access_token = Facebook.getAuthResponse().accessToken;
params.message = 'Hello World';
params.caption = "Hello World";
params.description = "Hello World";
params.picture="http://1.bp.blogspot.com/-0Hn3AjTJj6U/TZHe3ragXGI/AAAAAAAAA1M/_SBk3dx61EE/s1600/med_funny-cat.jpg";
params.name="Hello World";
params.link="http://1.bp.blogspot.com/-0Hn3AjTJj6U/TZHe3ragXGI/AAAAAAAAA1M/_SBk3dx61EE/s1600/med_funny-cat.jpg";
var methodInput = 'feed';
Facebook.api("/"+user_id+"/feed",submitPostHandler,params,"POST");
}
private function submitPostHandler(result:Object, fail:Object):void {
trace("\n\nRESULT:\n" + JSON.encode(result));
puntajeFinal.text = "RESULT:" + JSON.encode(result) + user_name;
}
下面是发布.swf的php文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<div id="fb-root"></div>
<div id="chimpInvader">
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<div id="flashContent">
<!--<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="600" height="700">
<param name="SRC" value="chimpInvader.swf" />
<embed src="chimpInvader.swf" width="600" height="700" />
</object>-->
</div>
<script>
FB.init({appId : '336824736350079', status : true, cookie : true, xfbml : true });
FB.Canvas.setAutoResize(false);
FB.Canvas.setSize({ height: 720, width: 600 });
swfobject.embedSWF("chimpInvader.swf", "chimpInvader", "600", "700", "11.1", null, null, null, null);
</script>
</body>
</html>
init({appId:'3368247365079',状态:true,cookie:true,xfbml:true});
FB.Canvas.setAutoResize(false);
FB.Canvas.setSize({高度:720,宽度:600});
swfobject.embedSWF(“黑猩猩入侵者.swf”、“黑猩猩入侵者”、“600”、“700”、“11.1”、null、null、null、null);
我希望你能帮助我,很抱歉我的英语很糟糕。你正在使用Facebook javascript库对用户进行Facebook身份验证。 因此,要使应用程序与flash一起工作,您需要拥有javascript API请求附加权限才能将故事发布到用户提要 当您请求扩展权限,并且用户授予这些权限时,javascript api将返回一个访问令牌。它将是一个长字符串。将此字符串传递到flash中,因为flash在将新闻报道发布到facebook时需要包含此访问令牌 下面是当我一起使用facebook和flash时,我想要实现这一目标的方式
<script src="js/swfobject.js"></script>
<script>
// make it safe to use console.log always
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try
{console.log();return window.console;}catch(err){return window.console={};}})());
// Set up SWF Address
var flashvars = {
};
var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "#000000",
wmode: "transparent" // can cause issues with FP settings & webcam
};
var attributes = {
id:"YourEmbeddedSwf"
};
swfobject.embedSWF(
"YourEmbeddedSwf.swf",
"altContent", "520", "724", "10.0.0",
"expressInstall.swf",
flashvars, params, attributes);
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
// Load Facebook API
window.fbAsyncInit = function() {
FB.init({ appId: 'PLACE YOUR APP ID HERE',
channelUrl : '//yoursite.com/channel.html',
status: true,
cookie: true,
xfbml: true,
oauth: true});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
// Custom Facebook Calls.
// Call getAccessToken() from flash using External Interface,
function getAccessToken(){
FB.login(function(response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
//Log your access token so you can be sure the javascript is worjking,.
console.log('Access Token = '+ access_token);
var swf = document.getElementById("YourEmbeddedSwf");
// Call a flash function exposed with External Interface.
swf.setAccessToken(access_token);
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {scope: ''});
}
// Get Swf
function getSwf(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
}
</script>
<!-- Embed the swf -->
<div id="altContent">
<h1>Alternate Content</h1>
<p><a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a></p>
</div></body>
</html>
//确保始终安全地使用console.log
(函数(b){function c(){}for(var d=“assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn”){b[a]=b[a]| c}
{console.log();return window.console;}catch(err){return window.console={};}}();
//设置SWF地址
var flashvars={
};
变量参数={
菜单:“假”,
音阶:“noScale”,
allowFullscreen:“真”,
allowScriptAccess:“始终”,
bgcolor:#000000“,
wmode:“透明”//可能导致FP设置和网络摄像头出现问题
};
变量属性={
id:“YourEmbeddedSwf”
};
swfobject.embeddeswf(
“YourEmbeddedSwf.swf”,
“altContent”、“520”、“724”、“10.0.0”,
“expressInstall.swf”,
flashvars、参数、属性);
//加载Facebook API
window.fbAsyninit=函数(){
FB.init({appId:'将你的appId放在这里',
channelUrl:“//yoursite.com/channel.html”,
状态:正确,
曲奇:是的,
xfbml:是的,
oauth:true});
//这里有额外的初始化代码
};
//异步加载SDK
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);
//自定义Facebook电话。
//使用外部接口从flash调用getAccessToken(),
函数getAccessToken(){
FB.登录(功能(响应){
if(response.authResponse){
var access_token=FB.getAuthResponse()['accessToken'];
//记录您的访问令牌,以便确保javascript正在运行,。
log('Access Token='+Access_Token);
var swf=document.getElementById(“YourEmbeddedSwf”);
//调用外部接口公开的flash函数。
setAccessToken(访问令牌);
});
}否则{
log('用户取消登录或未完全授权');
}
},{作用域:'});
}
//获得Swf
函数getSwf(movieName){
if(navigator.appName.indexOf(“Microsoft”)!=-1){
返回窗口[movieName];
}否则{
归还文件[movieName];
}
}
}
替代内容
只是您必须在应用程序设置中正确设置域和画布URL。否则,当facebook.init()运行时,您将无法看到任何错误,并且无法进入该函数