从应用程序发布流-对于未登录的用户,使用图形API、php SDK
使用graph api发布\u流权限:与脱机\u访问权限一起使用: 如上所述和所述。然而,出于某种原因,以下两种情况之一正在发生: 我正在尝试向一个当前未登录的facebook用户发帖,这是由于一个用户当前已登录(例如,告诉用户#1该用户#2访问了他们在farmville的农场,但用户#1未登录,而用户#2登录,并且他们不一定是朋友) 当我尝试使用以下代码时,当用户#1和#2不是朋友时,帖子并没有创建(第一个问题),当他们是朋友时,帖子正在创建,但似乎用户#2在用户#1的墙上发布(第二个问题-这不是我想要做的,我希望它是匿名的)。 请参阅我使用的第一个代码:从应用程序发布流-对于未登录的用户,使用图形API、php SDK,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,使用graph api发布\u流权限:与脱机\u访问权限一起使用: 如上所述和所述。然而,出于某种原因,以下两种情况之一正在发生: 我正在尝试向一个当前未登录的facebook用户发帖,这是由于一个用户当前已登录(例如,告诉用户#1该用户#2访问了他们在farmville的农场,但用户#1未登录,而用户#2登录,并且他们不一定是朋友) 当我尝试使用以下代码时,当用户#1和#2不是朋友时,帖子并没有创建(第一个问题),当他们是朋友时,帖子正在创建,但似乎用户#2在用户#1的墙上发布(第二个问题-这
$post_id = $facebook->api('/' . $user1_id . '/feed/', 'post', array(
'message' => 'Someone just visited your farm',
'link' => 'http://example.com',
'picture' => 'http://example.com/img/picture.jpg',
'caption' => 'Visit farms!'
));
因此,我尝试使用用户#1的访问令牌,这是他登录时给我的,该应用程序应该能够在他们离线时在墙上发布(即使没有离线访问权限-请参阅facebook的文档:“您可以发布……无需离线访问”。无论如何,当我将access_令牌作为参数添加到数组中时(请参见下面的代码),根本不会创建post:
$post_id = $facebook->api('/' . $user1_id . '/feed/', 'post', array(
'access_token' => $user1_access_token,
'message' => 'Someone just visited your farm',
'link' => 'http://example.com',
'picture' => 'http://example.com/img/picture.jpg',
'caption' => 'Visit farms!'
));
我该怎么办
因此,我只是试图发布到未登录的用户墙,但谁给了我发布流权限,来自应用程序的帖子,而不是任何其他用户,告诉该用户有人(匿名)已经“访问了他们的农场”(或创建了一些与他们相关的操作)
谢谢大家。这只是一个建议&我不确定这是否是答案 销毁所有会话(或在专用模式下使用浏览器-适用于Firefox) &然后像这样访问发件人页面 example.com/postfarm.php 也许当你正常访问页面时,应用程序会获取你的访问令牌并尝试在你发布时发布 PS:更好的方法 使用此代码&您不再需要销毁会话
include_once ('src/facebook.php');/// include sdk
////// config The sdk
@ $facebook = new Facebook(array(
'appId' => 'XXXXXXX',
'secret' => 'XXXXXXXXXXXXXX',
));
$facebook->destroySession();
try{
$post=$facebook->api('USER_ID/feed/','POST',array(
'message' => '$message',
'link'=>'http://apps.facebook.com/xxxxxxx/link.php?link=',
'picture'=> 'XXXXXXXXXX',
'name'=>'XXXXXX',
'description'=>'yes',
));
}
catch(FacebookApiException $e) {
echo $e->getType();
echo '<br />';
echo $e->getMessage();
}
include_once('src/facebook.php');///include sdk
//////配置sdk
@$facebook=新的facebook(数组)(
“appId”=>“XXXXXXX”,
“机密”=>“XXXXXXXXXXXXX”,
));
$facebook->destroySession();
试试{
$post=$facebook->api('USER_ID/feed/','post',数组(
'消息'=>'$message',
'链接'=>'http://apps.facebook.com/xxxxxxx/link.php?link=',
'图片'=>'XXXXXXXXX',
“名称”=>“XXXXXX”,
“说明”=>“是”,
));
}
捕获(FacebookApiException$e){
echo$e->getType();
回声“
”;
echo$e->getMessage();
}
对于“有人在游戏中做了什么,轮到你了”,我相信你要找的是requests 2.0,特别是“应用程序到用户”的通信
发件人:
应用到用户请求可用于重新让用户参与您的应用,并
只能发送给已安装应用程序的用户。例如,
通知用户自上次访问以来发生了更改,
“你的10个朋友现在在线”
应用到用户的请求通过Graph API发送,以了解更多信息
请参阅apprequests文档。应用程序到用户请求仅适用于
画布应用程序,而不是网站,因为接受请求将指导用户
发送请求的应用程序的画布页面URL
发件人:
应用程序生成的请求:这些请求只能启动和发送
已授权您的应用的用户。您应该使用这些请求
更新书签计数以鼓励用户重新参与
应用程序(例如,您的朋友在游戏中完成了移动,现在是您的
转身)
正确,因为你没有指定,我假设你有最常见的Facebook应用程序类型…canvas应用程序。如果你没有这样的标准,你应该在你的问题中明确说明,这样你的问题就有更高的机会被正确回答。顺便说一句,Facebook不赞成自动发送邮件的应用程序(非用户交互和固定文本)将这样的消息发送到用户的墙上。你应该查看他们的策略,否则你的应用可能会被关闭。这不是自动的,是由用户激活的。嗨!所以,这在“私人浏览”中起作用在firefox中,但我想将其添加到我的代码中,我尝试过销毁会话,但没有成功。我该怎么做?谢谢!你可以用它来销毁Facebook会话
$Facebook->destrosession();
我尝试过crontab,它成功了,现在我正在尝试Facebook销毁会话,希望它也能成功。