我正在尝试使用og向我的网站添加自定义操作和对象。正如我在之前搜索过的问题中所述,调试器正确地抓取了网站并确认它应该是没有任何错误,警告或例外的方式。
然而,当我使用php sdk发布到该对象时,我从FB获得此异常:
OAuthException:(#3502)网址//mypage.com/image/details的对象有og:'website'类型。属性“照片”需要一个og的对象:输入'app_prod:photo'。
[注意我已删除所有“http://”,以便stackoverflow不会将它们呈现为链接]
php sdk电话:
$ ret_obj = $ facebook-> api('/ me / app_prod:love','POST',数组(
'photo'=> '//mypage.com/image/details',
'access_token'=> $令牌 ));
页面的头部如下所示:
< head prefix =“og://ogp.me/ns#fb://ogp.me/ns/fb# app_prod://ogp.me/ns/fb/app_prod#">
< meta property =“fb:app_id”content =“APP_ID”>
< meta property =“og:type”content =“app_prod:photo”>
< meta property =“og:url”content =“http://mypage.com/image/details”>
< meta property =“og:title”content =“我喜欢的图片”>
< meta property =“og:image”content =“http://images.mypage.com/8f9117301e00dbfb.jpg”>
< meta property =“og:description”content =“这是一个描述”>
我经过双重检查的事情:
我有正确的应用ID。
当我使用facebook提供的curl命令进行操作时,它会正常发布。
我的头和元标签正是我从facebook提供的对象“代码”中复制的。
提前致谢!
答案 0 :(得分:0)
我在Stackoverflow here上找到了解决方案here。
问题通常是由服务器竞争条件引起的 应用程序无法处理两个同时发生的HTTP请求。 有时当用户执行操作并且应用程序调用a时 FB立即打开图形请求,很可能是新的对象页面 还没有生成。
var openGraphUrl = '/me/' + OG_NAMESPACE + ':' + OG_ACTION + '?' + OG_OBJECT + '=' + siteURL;
var scrapeUrl = '/?ids='+siteURL+'&scrape=true';
_.setTimeout(function(){
FB.api(scrapeUrl, 'post',
function(response) {
if (!response || response.error) {
console.log('scrap: '+response.error.message);
} else {
FB.api(openGraphUrl, 'post',
function(response) {
if (!response || response.error) {
console.log('OG: '+response.error.message);
} else {
console.log('Successful! Action ID: ' + response.id);
}
}
);
}
});
}
, 5000);