【问题标题】:Facebook app notification template with user id ( @[user_id] ) not working带有用户 ID (@[user_id]) 的 Facebook 应用通知模板不起作用
【发布时间】:2015-03-24 17:22:21
【问题描述】:

我无法使用 @[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 返回“假”

$friendId 是有效的应用用户,并且 $app_token 是“appid|appsecret”

如果我用“test”之类的简单消息替换“模板”,一切正常

有什么想法吗?

【问题讨论】:

    标签: php facebook facebook-graph-api curl facebook-app-requests


    【解决方案1】:

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

    还请确保您的应用未处于“开发者模式”,如果是,您需要将您的用户添加为测试人员或开发人员,以便您可以测试您的应用。

    我在几分钟前已经对此进行了测试,效果很好。

    作为一个无关的问题,使用 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 User ID 而不是普通的 Facebook User ID。

    【讨论】:

    • 谢谢。我检查了所有这些,但仍然没有快乐。我的应用程序处于开发人员模式,但有问题的朋友被标记为测试人员。我不明白的一件事 - 什么是应用程序范围的 ID?模板应该包含常规用户 ID 还是应用范围内的用户 ID?
    • 您好 techsMex,我已经更新了我的答案,提供了简短的解释和指向应用范围 ID 的链接。检查您的朋友是否具有普通用户 ID 或 App Scoped ID 的最佳方法是给我/朋友打电话并使用那里提供的 ID。
    • 另外,请注意,当 API 调用失败时,Facebook API 将始终返回错误代码和错误描述,而不仅仅是“false”。您的 PHP 代码可能没有正确处理错误响应。我建议使用 Facebook Graph API Explorer (developers.facebook.com/tools/explorer) 来测试您的 API 调用并查看真正的错误。它应该足够清晰,可以为您指明正确的方向。
    • 感谢您的澄清,我的应用最初是在 2010 年创建的,但很高兴知道!我会尝试 php sdk 并获取更多信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多