【问题标题】:Facebook app error with access token访问令牌的 Facebook 应用程序错误
【发布时间】:2013-05-10 21:47:49
【问题描述】:

我有 Facebook 的 Flash 游戏。昨天它工作正常,成功地将数据插入数据库,但现在当我尝试启动我的应用程序/游戏时出现错误:Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home/padekime/domains/padekime.eu/public_html/images/base_facebook.php on line 1254

这是我的代码:

<?php
$request = $_REQUEST["signed_request"];
list($encoded_sig, $load) = explode('.', $request, 2);
$fbData = json_decode(base64_decode(strtr($load, '-_', '+/')), true);
if (!empty($fbData["page"]["liked"]))
{ ?>
<?php

require_once('images/Facebook.php');

  $facebook = new Facebook(array(
    'appId'  => 'yyyyyyyyyyyyyyyyyyyyyyy',
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  ));

  # Get User ID
  $user = $facebook->getUser();
$user_profile = $facebook->api('/me');
$coded = $_REQUEST['code'];
$name = "".$user_profile['name']."";

  if ($user) {
    try {


?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-8" />
<title>Eurokos</title>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<center>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="643" id="Eurokos" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="Memory22.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="Memory22.swf" quality="high" bgcolor="#ffffff" width="550" height="643" name="Eurokos" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</center>
</body>
</html>

<?php
echo "Name: " . $user_profile['name'];
$name = $user_profile['name'];
session_start();
$_SESSION['vardas'] = $name;


echo $facebook->getAccessToken();
      $apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

    } catch (FacebookApiException $e) {
      $user = null;
      error_log($e);
    }
  } else {
$redirectUri = 'http://www.facebook.com/JuokoEra/app_156187751211405?ref=ts';
    $loginUrl = $facebook->getLoginUrl( array(
        'scope' => 'publish_stream,photo_upload',
        'redirect_uri' => $redirectUri
    ));
    echo("<script>top.location.href = '" . $loginUrl . "';</script>");
  }
?>
<html>
<?php 
?>

<a href="band.php?varname=<?php echo $name ?>">Page2</a>;
<form method="post" action="band.php">
    <input type="hidden" name="vardas" value="$name">
    <input type="submit">
</form>

</body>
</html>
<?php }else {?>
<?php
//$link = 'http://www.google.lt'; // url link
//$src = 'http://www.juokoera.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // image url
//echo '<a href="'. $link .'"><img style="border:none;" src="'. $src .'" /></a>';
?> <div align="center"><?php
$image_off = 'http://www.juokoera.lt/atostogos/images/atostogosU.jpg';
$image_on = 'http://www.juokoera.lt/atostogos/images/atostogosN.jpg';
echo '<img src="http://www.juokoera.lt/atostogos/images/atostogosN.jpg" onmouseover="this.src=\''.$image_off.'\';" onmouseout="this.src=\''.$image_on.'\';"/>';
?></div>
<?php } ?>

我不知道怎么了,昨天它起作用了,这个echo $facebook-&gt;getAccessToken();返回了访问令牌,但是今天应用程序不起作用。你可以帮帮我吗?谢谢。

【问题讨论】:

  • echo $facebook-&gt;getAccessToken(); 现在是否返回访问令牌?如果是,在这个 url 调试它:developers.facebook.com/tools/debug
  • 不返回,我无法进入我的应用程序。
  • 开始一步一步调试你的代码。 var_dump() 每个变量和它之后的exit() 这将有所帮助。完成后,您可以分享结果,我们将继续思考可能出现的问题。
  • 您是每次访问应用程序时都生成访问令牌还是仅使用存储的令牌访问应用程序...?因为目前尚不清楚 Facebook 类做什么(接受 app_id 和 app_secret)

标签: mysql facebook flash access-token


【解决方案1】:

access_token 仅在一个小时内有效,除非您已将其转换为长期有效的访问令牌。如果access_token返回错误,建议让用户重新登录或使用JavaScript SDK为用户获取新的token(可以使用函数FB.getLoginStatus()函数)

如果用户更改了密码,access_token 也会过期。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 2012-09-30
    • 2016-01-18
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2013-08-22
    相关资源
    最近更新 更多