我正在开发一款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
"answers"publish_actions
"权限。
这是成功的工作,响应变量输出1。我可以使用Facebook图表API资源管理器看到发布的分数,所以我认为一切都很顺利。
问题是,我在脸书上的任何地方都看不到所谓的发布用户故事。在阅读文档时,我觉得用户故事必须在保存分数时自动发布。举个例子,看看这里或这里。
有人已经解决了这个问题吗?你看到我可能遗漏的东西了吗?你能告诉我解决这个问题的正确方向吗?
如有任何帮助,我们将不胜感激。
您编写
在阅读文档时,我觉得用户故事必须在保存分数时自动发布。
分数不会自动公布。它们只在特定条件下发布,即当用户:
- 获得新的高分("高分故事"(
- 传递另一个朋友的分数("传递故事"(
在你的代码中,你每次都会发布1500分。在你第一次发布它之后,当你再次重复发布它进行测试时,你的发布请求将成功,但分数不会再次发布,因为它不是新高。
来源:
Facebook开发者:游戏教程
Facebook开发者博客:游戏更新:扩大分数和成就的分发
试着看看这个
https://github.com/fbsamples/CriticalMass/tree/master/web/criticalmass
希望将是一个有用的
您可以通过向具有publish_stream权限的APP_ID/feed(而不是profile_ID/posts(发出HTTP post请求,在应用程序的配置文件页面上创建帖子。
更多详细信息:TechNew.在中
如果您的问题是"当我成功地将分数发布到API时,它不一定会在新闻推送或时间轴上创建故事",这不是问题-这就是分数API的工作方式。
分数是一个轻量级的共享选项,并不总是单独显示-我很少在Facebook上看到"用户获得分数X"的故事,但经常看到"X在Z中击败Y的分数"answers"X获得新的高分"-用户个人资料上还有一个时间线单元,显示游戏活动的摘要,分数数据也显示在那里。
当用户获得新的高分时,只需继续向/[user]/scores发布,并让Facebook负责分发
我最近读到FB已经停止允许Api发布时间表。它仍然会出现在新闻推送中,但不再出现在他们的墙上。
我想我已经为您找到了问题所在。
https://developers.facebook.com/docs/opengraphprotocol/#types
参见声明:
文章或视频类型的页面没有发布权限,也不会出现在用户的个人资料中,因为它们不是真实世界的对象。