我在将我的游戏集成到 Facebook 时遇到问题。在阅读文档后,我了解到从 Flash 与 FB 进行通信的最佳和最新方式是通过 JavaScript 上的 Facebook API。我称之为获取所有 ui 对话框和基本登录信息。现在,我的 Flash 游戏连接到 php 以发送和接收高分,如下所示:
score.php?action=NEWSCORE&userId=123123123&score=100
score.php?action=VIEW
score.php?action=VIEWFRIENDS&userId=123123123
现在,在 score.php 中,当我设置 VIEWFRIENDS 操作时,我希望 php 创建 facebook 查询。我通过添加来做到这一点
// Init the Facebook SDK
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
// Get the current user
$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();
$fbresponse = $facebook->api("/me/friends?fields=installed", array('access_token'=>$access_token.$access_token,));
if ($fbresponse)
{
$friendsData = $fbresponse['data'];
$friendsString = '';
$friendCount = 0;
for ($i = 0; $i < sizeof($friendsData); $i++)
{
$friend = $friendsData[$i];
if ($friend['installed'])
{
if ($friendCount > 0)
$friendsString = $friendsString . ",";
$friendsString = $friendsString . "'" . $friend['id'] . "'"; $friendCount++;
}
}
// Get the friends highscores
$sql = "SELECT * FROM Highscores WHERE FacebookId IN (" . $friendsString . ") ORDER BY Score DESC LIMIT " . $scoresize ;
$result = mysql_query($sql);
}
执行此操作时,如果我在 Facebook 之外对其进行测试,一切似乎都可以正常工作,但是当我将其集成到我的应用程序中时,它会引发以下错误:
<br /> <b>Fatal error</b>: Uncaught OAuthException: Invalid access token signature. thrown in <b>/home/public_html/mysite.org/games/myGameFacebook/fb-php-sdk/base_facebook.php</b>
在线1106
我正在尝试检查发生了什么,但我还没有弄清楚该怎么做。我了解访问令牌是在通过此代码登录时在 Javascript 上生成的。
getLoginStatus:function() {
log("getLoginStatus");
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
log("Logged in.");
F.token = response.authResponse.accessToken;
F.getCurrentUserInfo();
} else if (response.status === 'not_authorized') {
log("User did not authorize app");
} else {
log("Not logged in.");
FB.login(function(response) {
if(response.session) {
log("Logging successful.");
F.token = response.session.access_token;
F.getCurrentUserInfo();
} else {
log("Logging failed.");
}
});
}
});
},
我该如何解决这个问题?我一直试图了解如何做到这一点,但我读过它要么不可能,要么链接到一些从未起作用的未知会话变量。