创建facebook apprequests

创建facebook apprequests,facebook,facebook-graph-api,apprequests,Facebook,Facebook Graph Api,Apprequests,我正在尝试在特定事件发生时从应用程序向用户发送消息。现在我有这个密码 $param = array( 'message' => 'XYZ shared a file with you', 'data' => 'additiona_string_data', 'access_token' => $facebook->getAccessToken(), ); $tmp = $facebook->api("/$uid/appre

我正在尝试在特定事件发生时从应用程序向用户发送消息。现在我有这个密码

$param = array(
   'message'      => 'XYZ shared a file with you',
   'data'         => 'additiona_string_data',
   'access_token' => $facebook->getAccessToken(),
);
$tmp = $facebook->api("/$uid/apprequests", "POST", $param);
但我总是得到未捕获的OAutheException:(#2)无法创建任何抛出的应用程序请求


我不知道问题出在哪里。

您应该阅读请求文档。
在本文中,有关于两种不同类型请求的解释

  • 用户启动(使用)
  • 已生成应用程序(使用)
您需要的是应用程序访问令牌,这意味着您需要的是应用程序访问令牌,而不是用户。


我假设您使用的是用户访问令牌,因为您的代码示例中没有包含facebook对象的启动,并且可能已经验证了用户,因此
getAccessToken()
调用将返回用户访问令牌,而不是应用程序访问令牌。

我对这一点有点困惑“我试图在特定事件发生时从应用程序向用户发送消息。现在我有这个代码”的意思

  • 当有人在用户墙上发帖时向其发送电子邮件

  • 向用户发送事件邀请

  • 向用户发送应用程序邀请

  • 当发生类似“XYZ与您共享文件”的情况时,在用户墙上书写

  • 您需要用户的
    电子邮件
    读取流
    权限。使用实时更新监控他的墙,然后使用您的SMTP服务器向他发送电子邮件

  • 有关如何创建活动邀请的信息,请参见

  • 正如@Lix指出的,请参见

  • 您应该使用新的Open Graph对象/操作来完成此操作。请参见以下示例:


  • 您可以通过以下方式接收Facebook应用程序访问令牌:

    https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&client_secret=FB_APP_SECRET&grant_type=client_credentials
    
    使用Facebook PHP SDK将应用程序发布到用户请求的工作代码示例(在需要时添加错误处理):


    你应该包括你收到的整个错误。在这种情况下,很明显它来自facebook sdk,但最好包括整个错误字符串。它通常包含关于引发错误的文件的信息,甚至代码在哪一行。
    $facebook = new Facebook(array(
      'appId'  => FB_APP_ID,
      'secret' => FB_APP_SECRET,
    ));
    
    $token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . 
       FB_APP_ID ."&client_secret=" . FB_APP_SECRET ."&grant_type=client_credentials";
    
    $result = file_get_contents($token_url);
    $splt = explode('=', $result);
    $app_access_token =$splt[1];
    
    $facebook->setAccessToken($app_access_token);
    
    $args = array(
        'message' => 'MESSAGE_TEXT',
    
    );
    $result = $facebook->api('/USER_ID/apprequests','POST', $args);