Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从应用程序发布流-对于未登录的用户,使用图形API、php SDK_Php_Facebook_Facebook Graph Api - Fatal编程技术网

从应用程序发布流-对于未登录的用户,使用图形API、php SDK

从应用程序发布流-对于未登录的用户,使用图形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的墙上发布(第二个问题-这

使用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销毁会话,希望它也能成功。