我要强调的第一个问题是,由于同源策略,Facebook限制以及Facebook JS SDK中缺少变量,因此无法确定正在加载的页面的URL是什么礼物App。解决方案是使用后端生成URL。但是,应该有JS SDK变量来保存这些信息。
http://www.facebook.com/pages/[any-random-string]/[page-id-got-from-signed-request]?sk=app_[app-id]
现在,对错误本身。我正在使用此URL生成类似按钮:
<div class="fb-like" data-href="<?=FACEBOOK_TAB_URL?>" data-send="false" data-layout="button_count" data-width="100" data-show-faces="false" data-font="lucida grande"></div>
并FB.Event.subscribe
检测用户何时喜欢该内容。但是,当用户点击“赞”按钮时,以下响应来自Facebook:
{
"__ar":1,
"payload":{
"requires_login":false,
"success":false,
"already_connected":false,
"is_admin":false,
"show_error":true,
"error_info":{
"brief":"An error has occurred.",
"full":"There was an error liking the page. If you are the page owner, please try running your page through the linter on the Facebook devsite (https:\/\/developers.facebook.com\/tools\/lint\/) and fixing any errors.",
"errorUri":"\/connect\/connect_to_node_error.php?title=An+error+has+occurred.&body=There+was+an+error+liking+the+page.+If+you+are+the+page+owner\u00252C+please+try+running+your+page+through+the+linter+on+the+Facebook+devsite+\u002528https\u00253A\u00252F\u00252Fdevelopers.facebook.com\u00252Ftools\u00252Flint\u00252F\u002529+and+fixing+any+errors.&hash=AQBOXfQcBTjYQ9b7"
}
},
"jscc":""
}
显然,由于这是Facebook粉丝页面的URL,Facebook调试器对我来说没什么用。
答案 0 :(得分:0)
此问题与Facebook缓存网址有关。当您喜欢内容时,它会出现,然后在短时间内再次尝试再次喜欢它。简单的解决方案是在data-href=""
的末尾添加随机哈希,例如使用uniqid()。
请注意,OpenGraph标记剪贴板将遵循上一个og:url
。因此,即使您将date-href
参数附加了随机哈希,只要所使用的网址具有自己的og:url
标记,计数器就会正常运行。