我正在开发一款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上的任何地方看到所谓的用户故事。 在阅读文档时,在我看来,当用户保存分数时,必须自动发布用户故事。例如,看看here或here。
有没有人解决过这个问题?你看到我可能遗失的东西吗?能否指出我正确的方向来解决这个问题?
任何帮助都将受到高度赞赏。
答案 0 :(得分:4)
你写
在阅读文档时,我觉得必须在保存分数时自动发布用户故事。
分数不会自动发布。它们仅在某些条件下发布,即用户:
在您的代码中,您每次都会发布1,500分。在您第一次发布之后,当您再次发布它以进行测试时,您的发布请求将会成功,但分数将不会再次发布,因为它不是新的高。
来源:
Facebook Developers: Games Tutorial. {
{3}}
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以通过发布带有publish_stream权限的APP_ID / feed(不是PROFILE_ID / posts)的HTTP POST请求,在应用程序的个人资料页面上创建帖子。
更多详情:TechNew.In
答案 3 :(得分:1)
如果您的问题是'当我成功将分数发布到API时,它不一定在新闻Feed或时间轴上创建故事'这不是问题 - 这就是分数API的工作方式。
分数是一个轻量级的分享选项,并不总是单独显示 - 我很少在Facebook上看到“用户得分X”的故事,但看到'X在Y中击败Y的分数'和'X获得了新的高分'经常 - 在用户的个人资料中还有一个时间轴单元,显示游戏活动的摘要,并显示那里的分数数据。
当用户获得新的高分并让Facebook负责分发时,只需保持发布到/ [用户] /分数
答案 4 :(得分:0)
我最近读到一些内容,FB已经停止允许Api帖子进入时间表。它仍将出现在新闻提要中,但不再出现在他们的墙上。
答案 5 :(得分:-2)
我想我已经找到了你的问题。
https://developers.facebook.com/docs/opengraphprotocol/#types
见声明:
文章或视频类型的页面没有发布权限,并且不会显示在用户的个人资料上,因为它们不是真实世界的对象。