2

我刚刚开始为我的游戏实施 FB 成就。我正在为我的应用程序使用 PHP SDK。

我已经使用我的类中的以下代码成功注册了一个成就,该代码是 PHP SDK 类的子类:

$URL = 'apps.facebook.com/<app_name>/ach1.html';
$AppID = $this->getAppId();

$Params = array('achievement' => $URL);

$res = $this->api($AppID.'/achievements', 'POST', $Params);

我可以确认这是通过 Graph API Explorer 创建的:

{
  "data": [
    {
      "url": "http://apps.facebook.com/<app_name>/ach1.html", 
      "type": "game.achievement", 
      "title": "Tutorial", 
      "image": [
        {
          "url": "<app_img_url>/1-ach.jpg"
        }
      ], 
      "description": "Tutorial Completed", 
      "site_name": "<app_name>", 
      "data": {
        "points": 1
      }, 
      "updated_time": "2012-07-13T16:05:44+0000", 
      "id": "<id>", 
      "application": {
        "id": "<app_id>", 
        "name": "<app_name>", 
        "url": "https://www.facebook.com/apps/application.php?id=<app_id>"
      }, 
      "context": {
        "display_order": 0
      }
    }
  ]
}

但是,当我尝试为自己创建成就时,它返回 false:

$URL = 'apps.facebook.com/<app_name>/ach1.html';
$UserID = 100000466230867;

$AccessToken = $this->getApplicationAccessToken();

$Params = array('access_token' => $AccessToken,
                'method' => 'post',
                'achievement' => $URL);

$res = $this->api($UserID.'/achievements', 'POST', $Params);

结果是“布尔错误”。不返回错误代码。我在这里做一些明显或根本错误的事情吗?我也尝试过提供值为 1 和 0 的“display_order”。

我可以确认我也授予了 publish_actions 权限。

permissions:Array ( [data] => Array ( [0] => Array ( [installed] => 1 [email] => 1 [publish_actions] => 1 [bookmarked] => 1 ) ) ) 

我的应用程序也正确配置为游戏。

非常感谢任何帮助!

干杯

4

1 回答 1

0
  1. 如果应用程序处于沙盒模式,请将其取出。
  2. 确保用户已授权且未删除该应用

“false”通常表示“您正在使用其访问令牌的人或页面看不到您要求的数据”,这种情况最常发生在被阻止的用户、沙盒模式下的应用程序、已删除的内容等。在这种情况下,我怀疑应用程序无法看到/与用户交互(如果这是通过应用程序设置界面或 API 创建的测试用户,这尤其可能是因为测试用户有一些奇怪的隐私怪癖)

于 2012-07-30T18:47:03.083 回答