10

我正在开发一个 PHP 游戏,并希望将玩家高分发布到他们自己的 Facebook 墙/时间线。

我已经设置了一个 Facebook 应用程序,我用来发布分数的 PHP 代码是(由 Facebook 本身提供):

<?php
 require 'facebook-sdk/facebook.php';

 $app_id = MY_APP_ID;
 $app_secret = MY_APP_SECRET;
 $score = 1500;  // this is gonna be passed someway...

 $facebook = new Facebook(array(
   'appId'  => $app_id,
   'secret' => $app_secret,
 ));

 $user = MY_USER_ID;  // to be replaced with a call to $facebook->getUser()

 $app_access_token = get_app_access_token($app_id, $app_secret);
 $facebook->setAccessToken($app_access_token);
 $response = $facebook->api('/' . $user . '/scores', 'post', array(
   'score' => $score,
 ));
 print($response);

 // Helper function to get an APP ACCESS TOKEN
 function get_app_access_token($app_id, $app_secret) {
   $token_url = 'https://graph.facebook.com/oauth/access_token?'
     . 'client_id=' . $app_id
     . '&client_secret=' . $app_secret
     . '&grant_type=client_credentials';

   $token_response =file_get_contents($token_url);
   $params = null;
   parse_str($token_response, $params);
   return  $params['access_token'];
 }
?>

当然有一个我省略的登录和安装部分,要求用户登录并授予应用程序“ publish_stream”和“ publish_actions”权限。

这很成功,响应变量输出 1。我可以使用 Facebook Graph API Explorer 查看发布的分数,所以我认为一切都运行良好且顺利。

问题是我无法在 Facebook 上的任何地方看到所谓发布的用户故事。阅读文档,在我看来,用户故事必须在保存分数时自动发布。例如,看看这里这里

有没有人已经解决了这个问题?你看到我可能遗漏的东西了吗?你能指出我解决这个问题的正确方向吗?

任何帮助将不胜感激。

4

6 回答 6

4

你写

阅读文档,在我看来,用户故事必须在保存分数时自动发布。

分数不会自动发布。它们仅在特定条件下发布,即当用户:

  • 获得新的高分(“高分故事”)。
  • 传递另一个朋友的分数(“传递故事”)。

在您的代码中,您每次都发布分数 1,500。第一次发帖后,再重复发帖测试,发帖成功,但分数不是新高,不会再发。

资料来源:
Facebook 开发者:游戏教程。
Facebook 开发者开发者博客:游戏更新:扩大分数和成就的分发范围

于 2012-06-14T23:51:33.873 回答
2

试试看这个

https://github.com/fbsamples/CriticalMass/tree/master/web/criticalmass

希望会有用

于 2012-06-12T13:29:30.477 回答
1

您可以通过向具有 publish_stream 权限的 APP_ID/feed(而不是 PROFILE_ID/posts)发出 HTTP POST 请求,在应用程序的配置文件页面上创建帖子。

更多详情:TechNew.In

于 2012-06-13T08:18:55.537 回答
1

如果您的问题是“当我成功将分数发布到 API 时,它不一定会在动态消息或时间轴上创建故事”,这不是问题 - 这就是分数 API 的工作方式。

分数是一种轻量级的共享选项,并不总是单独显示 - 我很少在 Facebook 上看到“用户获得分数 X”的故事,但经常看到“X 在 Z 中击败 Y 的分数”和“X 获得新的高分” -用户个人资料上还有一个时间轴单元,显示游戏活动的摘要,并在此处显示分数数据。

当用户获得新的高分时,继续向 /[user]/scores 发帖,让 Facebook 负责分发

于 2012-06-14T23:00:07.047 回答
0

我最近读到 FB 已经停止允许 Api 发布到时间线。它仍然会出现在新闻提要中,但不再出现在他们的墙上。

于 2012-06-12T13:10:33.417 回答
-2

我想我已经为你找到了问题。

https://developers.facebook.com/docs/opengraphprotocol/#types

见声明:

文章或视频类型的页面没有发布权,并且不会显示在用户的个人资料中,因为它们不是现实世界的对象。

于 2012-06-14T22:46:46.503 回答