【问题标题】:Facebook Like Button - Is It Checked?Facebook Like 按钮 - 是否已选中?
【发布时间】:2026-01-05 21:30:01
【问题描述】:

我很难找到有关如何使用 javascript 来确定是否单击了赞按钮的良好文档。我不能使用点击事件,因为当用户进入我的页面时可能已经检查了该按钮,但这似乎是我能找到的关于从外部跟踪喜欢的全部内容(不包括不再支持的其他方法)。有没有人遇到过此类问题?谢谢。

【问题讨论】:

  • 我确定 API 中有一些东西。如果没有,检查按钮时是否有特定的class
  • 我尝试查找,但 facebook 的 API 很难找到可靠的答案和/或示例(更不用说似乎还有很多已弃用的文档)。我会看看是否应用了任何特定的类,但乍一看似乎没有。

标签: javascript facebook facebook-like


【解决方案1】:

这取决于 Like 按钮。如果是针对具有 ID 的 Facebook 对象,您可以查询 like 表(但您需要 user_likes 权限)

如果是用于 URL,那是不可能的:facebook graph api determine if user likes url [*]

对于built-in like,您可以使用 cookie 来记住点击,或者将点击保存在您自己的数据库中。

【讨论】:

    【解决方案2】:

    只是为了扩展 Gil 的答案。对于内置喜欢,您可以使用包含两个请求的批处理请求: 1)尝试喜欢有问题的对象 2)如果没有错误,删除like连接

    示例批次:

    [{"method":"POST", "relative_url":"me/og.likes", "body":"object=<SOME_URL>", "name":"like-attempt", "omit_response_on_success": false},
    {"method":"DELETE", "relative_url":"{result=like-attempt:$.id}"}]
    

    如果某个对象已被点赞,则批处理响应为:

    [
        {
            "code": 400,
            "headers": [
                ...
                {
                    "name": "WWW-Authenticate",
                    "value": "OAuth \"Facebook Platform\" \"invalid_request\" \"(#3501) User is already associated to the object object on a unique action type Like. Original Action ID: 143539809123515\""
                }
            ],
            "body": "{\n \"error\": {\n \"message\": \"(#3501) User is already associated to the object object on a unique action type Like. Original Action ID: 143539809123515\",\n \"type\": \"OAuthException\",\n \"code\": 3501\n }\n}"
        },
        null
    ]
    

    所以要检查对象是否被喜欢,JSON.parse 第一个响应正文并查找错误代码为3501 的错误。请记住,实际的错误代码没有记录在任何地方,因此它可能会发生变化,尽管我认为这不太可能。

    【讨论】: