带有用户 ID (@[user_id]) 的 Facebook 应用程序通知模板不起作用

Facebook app notification template with user id ( @[user_id] ) not working

我无法使用@[user_id] 模板工作:

$userid = <USER_ID>;
$friendId = <FRIEND_ID>; // This is a user who has accepted the app
$url = "https://graph.facebook.com/$userid/notifications";
$attachment =  array(   
                 'access_token'  => "$app_token",
                 'href' =>  "",
                 'template' => "@[" . $friendId . "] accepted challenge!"
               );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
//curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close ($ch);

$result returns 'false'

$friendId 是有效的应用程序用户并且 $app_token 是 "appid|appsecret"

如果我用 "test" 之类的简单消息替换 'template',一切正常

有什么想法吗?

您可能使用了错误的用户 ID。为了确保您为您的朋友使用了适当的 ID,请使用 me/friends 和您应用程序的有效用户访问令牌,并检查该 ID 是否在列表中以及它是普通用户 ID 还是应用程序作用域 ID。

另请确保您的应用不在 "Developer Mode" 中,如果是,您需要将您的用户添加为测试人员或开发人员,以便测试您的应用。

几分钟前我已经测试过了,效果很好。

作为一个不相关的问题,使用 Facebook 的 PHP SDK 不是更容易吗?

希望对您有所帮助。


编辑:应用范围内的用户 ID

Facebook 在 2014 年 4 月引入了版本控制。在 Facebook API V2 中,我们引入了 App Scoped User ID,您可以在这里阅读更多相关信息:https://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_user_ids

基本上,如果您的 FB 应用程序是在 2014 年 4 月之后创建的,您将收到每个用户的唯一 ID,该 ID 只能由您的应用程序使用。您必须使用这个新的 App Scoped 用户 ID 而不是普通的 Facebook 用户 ID。