2012-01-05 4 views
0

워싱턴 포스트 소셜 리더와 유사한 Facebook Open Graph App을 만들려고합니다. 이는 내 웹 사이트 www.zeitlife.co에서 기사를 읽을 때 개인의 뉴스 피드에 발표 할 것입니다. 영국.조치를 게시 할 수 없습니다.

나는 작업과 개체를 식별하고 집계를 테스트하기 위해 여러 가지 샘플을 작성하여 Open Graph 튜토리얼을 자세히 읽었습니다. "타임 라인에 추가"라는 버튼을 만들었지 만 액션 (이 경우 "읽기")을 게시하고 액션 ID를받을 수 없었습니다.

내가 만난 하나의 문제는 내 오픈 그래프 메타 태그가 자기 호스팅 된 WordPress 사이트에서 보이지 않는 내 태그 외부에 놓여 있다고 말하는 디버거 도구였습니다. 그러나 오픈 메타 메타 태그를 게시물의 메타 설명에 넣을 수있는 Meta SEO Pack 플러그인을 설치했으며 디버거 도구가이를 허용했습니다.

이렇게하면 전체 Open Graph 코드 (작업 및 개체)의 일부를 메타 설명에 넣는 것이 복잡해집니다. 나는 meta 설명에 "head"부분을 배치하고 "post body body"의 "body part"를 배치하여 기능하지 않는 버튼을 만들려고 시도했습니다.

아마도 내가 작성한 코드를 살펴볼 수 있습니다. ?

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" 
xmlns:fb="https://www.facebook.com/2008/fbml"> 

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# zeitlife: http://ogp.me/ns/fb/zeitlife#"> 
<meta property="fb:app_id"  content="308222752522151" /> 
<meta property="og:type"  content="zeitlife:article" /> 
<meta property="og:url"   content="http://www.zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould" /> 
<meta property="og:title"  content="Cabana: Brazilian that Breaks the Mould" /> 
<meta property="og:description" content="Restaurant Review" /> 
<meta property="og:image"  content="http://www.zeitlife.co.uk/wp-content/uploads/2011/12/IMG_2435.jpg" /> 

</head> 
</html> 

코드를 게시물의 본체에 :

<html> 
    <script type="text/javascript"> function read() 
{FB.api('/me/zeitlife:article' + '?article=zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould &access_token=AAAEYU7OsZC6cBAG0oRKggspR5xjr17Nlpntj2ylxOuN6o3Tztry2EKPWq3JO97yG9De1tlN1SEpqKarovmZAlNKLsEM3BdR4AZAIV6ARDEkQsVSMK3C','post', 
function(response) { 
var msg = 'Error occured'; 
if (!response || response.error) { 
if (response.error) { 
msg += "\n\nType: "+response.error.type+"\n\nMessage: "+response.error.message; 
} 
alert(msg); 
} 
else { 
alert('Post was successful! Action ID: ' + response.id); 
} 
}); 
} 
    </script> 

    <body> 
    <div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
FB.init({ 
appId:'308222752522151', cookie:true, 
status:true, xfbml:true, oauth:true 
}); 
    </script> 
    <form> 
    <input type="button" value="Post To Your Timeline " onclick="read()" /> 
    </form> 
    </body> 
    </html> 
문제가 있는지 확인

코드를 메타 설명에 사용

미리 도움을 주셔서 대단히 감사합니다. 대단히 감사합니다!

답변

0

먼저, 헤드 HTML 코드를 수정하기 위해 WordPress 플러그인을 만들 수 있습니다 (예 : 후크를 사용하여 wp_head 함수에 연결하십시오.

둘째, 사용자 지정 읽기 작업이 생성 된 것처럼 보입니다. Facebook은 승인을 받으면이를 거부합니다. 승인 프로세스를 쉽게하기 위해 내장 된 읽기 작업을 사용해야합니다.

마지막으로 읽기 호출을 수행하는 JS 함수가 올바르지 않습니다. 코드는 괜찮지 만 호출에 전달한 데이터가 잘못되었습니다. 함수에서 액세스 토큰을 사용할 필요가 없으며 기사의 전체 URL (예 : http 포함)을 사용해야합니다.

은 이런 식으로 코드를 변경

:이 아니라 'zeitlife : 기사'당신의 코드에서 수행과 같이 작업이 '읽을 zeitlife'이라고

setTimeout(function() { 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      // publish action to facebook 
      FB.api('/me/zeitlife:read', 'post', { article : 'http://zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould/' }); 
     } else if (response.status === 'not_authorized') { 
      // the user is logged in to Facebook, 
      // but has not authenticated your app 
     } else { 
      // the user isn't logged in to Facebook. 
     } 
    }); 
}, 2000); 

공지 사항. 아티클은 통화의 매개 변수입니다. API 탐색기 도구를 사용하여 API 호출을 테스트해야합니다. https://developers.facebook.com/tools/explorer/

관련 문제