FB Open Graph OAuthException:(#3502)og:type是website而不是namespace:object

时间:2012-08-09 18:13:59

标签: php facebook-opengraph

我正在尝试使用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 =“这是一个描述”>

我经过双重检查的事情:

  1. 我有正确的应用ID。

  2. 当我使用facebook提供的curl命令进行操作时,它会正常发布。

  3. 我的头和元标签正是我从facebook提供的对象“代码”中复制的。

  4. 提前致谢!

1 个答案:

答案 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);