发送用户消息的方法是什么?

时间:2011-10-24 13:44:29

标签: php facebook sdk

我正在尝试向用户发送消息。我使用消息对象,但它不起作用。这是我的代码:

        $sAccessToken = $facebook->getAccessToken();
        $aParams = array(
            'method'=> 'message',
            'format' => 'post',
            'from'=> $sFrom,
            'to' => $aTo, 
            'message' => $sMessage,
            'access_token' => $sAccessToken,
        );
        $facebook->api($aParams);

我的错误只有消息:未知方法

请求帮助。

2 个答案:

答案 0 :(得分:0)

新的Message GraphAPI端点尚未就绪,因此可能就是您遇到此问题的原因。

  

请注意:我们正在制作新邮件系统   所有用户都可以使用,此时此API将替换   / inbox / graph API端点。我们提供此API的早期访问权限   仅适用于已注册的开发者帐户,直到新的邮件系统   广泛可用。您应该使用/ inbox端点   目前的生产应用。

来源:Facebook API Documentation

答案 1 :(得分:0)

您是否尝试在用户的墙上发帖。如果是这样,从你发布的内容中就有一个错误。方法应该是POST not message。试试下面给出的一个。它应该工作。让我知道。

$sAccessToken = $facebook->getAccessToken();
$aParams =  array(
    'access_token' => $sAccessToken,
    'message' => "Hello, here is a post";
    );
$facebook->api('/OBJECT_ID/feed', 'POST', $aParams);

其中OBJECT_ID是需要在其上发布消息的用户的Facebook用户ID。

替代方法

无论如何,以下面给出的格式执行链接肯定会起作用

https://graph.facebook.com/OBJECT_ID/feed?method=POST&message=YOUR_MESSAGE&access_token=USER_ACCESS_TOKEN

其中OBJECT_ID是需要在其上发布消息的墙的用户的Facebook用户ID。 YOUR_MESSAGE是要发布的消息。 ACCESS_TOKEN是有效的用户访问令牌。

以上格式的请求将代表访问令牌的所有者在OBJECT_ID的墙上发布帖子。

错误原因

{
   "error": {
      "message": "(#200) The user hasn't authorized the application to perform this action",
      "type": "OAuthException"
   }
}

如果未对访问令牌授予“publish_stream”权限,则会发生此错误。你是如何确认你有权利的。

尝试使用此工具来确定是否授予了权限。 https://developers.facebook.com/tools/debug/并告诉我

如何以页面作为所有者创建帖子?

Facebook GRAPH API允许应用程序使用页面作为所有者而不是普通的Facebook用户创建帖子。为此,您需要manage_pages和publish_stream扩展权限。

<强> STEPS

如果您知道粉丝页面的Facebook ID,请转到https://graph.facebook.com/?ids=FAN_PAGE_ID&fields=name,access_token&access_token=ACCESS_TOKEN

否则转到https://graph.facebook.com/me/accounts&fields=id,name,access_token&access_token=ACCESS_TOKEN

登录Facebook后

您将获得登录用户或所需粉丝页面处理的帐户列表。您可以在其中找到您的粉丝页面详细信息以及access_token。使用该访问令牌而不是普通用户访问令牌。当您使用此新访问令牌创建帖子时,将在页面名称中创建条目,而不是普通的Facebook用户。