2012-05-04 3 views
2

나는 굉장하고 잘 작동하는 Nick Baker 's (webtechnick) CakePHP/Facebook 플러그인을 사용하고 있습니다. 그러나 나는 대답 할 수 없을만큼 의문이 있습니다.Cakephp Facebook 플러그인 - 액션을 통해 공유

조치를 통해 공유 버튼 사용을 직접 무시하고 공유하려면 어떻게해야합니까?

예를 들어 사이트를 통해 게시물을 만들고 게시물을 DB에 추가하고 작업을 통해 로그인 한 사용자의 Twitter 계정에 게시물을 촬영합니다. 이 작업을 FB 계정에 공유 처리하려면 어떻게해야합니까? (이미 연결되었습니다.) 나는 누군가가 명백하게 행동에서 직접 $ this-> Facebook-> share()를 시도 할 것이라고 생각한 첫 번째 것을 시도했다. 아무런 쓸모가 없었다. ...

어떤 생각이나 해결책이 큰 도움이 될 것이다.

애프터 서비스 후 업데이트

Thx for the help spooney. 나는 당신이 내가 말할 수있는 것에서 100 % 자리를 지키기 때문에 당신의 답을 뽑았습니다. JS SDK를로드 중입니다.

function init($options = null, $reload = true) { 
     if (empty($options)) { 
      $options = array(); 
     } 
     if ($appId = FacebookInfo::getConfig('appId')) { 
      $session = json_encode($this->Session->read('FB.Session')); 
      if ($reload) { 
       $callback = "FB.Event.subscribe('auth.login',function(){window.location.reload()});"; 
      } else { 
       $callback = "if(typeof(facebookReady)=='function'){facebookReady()}"; 
      } 
      $callback .= "FB.Event.subscribe('auth.logout',function() {window.location = '/bastards/users/logout'});"; 
      $init = '<div id="fb-root"></div>'; 
      $init .= $this->Html->scriptBlock(
<<<JS 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId : '{$appId}', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     oauth : true // use Oauth 
    }); 
    {$callback} 
}; 
(function() { 
    var e = document.createElement('script'); 
    e.src = document.location.protocol + '//connect.facebook.net/{$this->locale}/all.js'; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
}()); 
JS 
      , $options); 
      return $init; 
     } else { 
      return "<span class='error'>No Facebook configuration detected. Please add the facebook configuration file to your config folder.</span>"; 
     } 
    } 

나는 아무 문제가 사용자 정보를 당기고 모든 작업이 없습니다. ...

<a href="#" onClick="publishStory();" class="sendFeed"><br><font style="color:#FFF; text-decoration:none;padding-left:27px;">post to wall</font></a><br> 
<script> 
function publishStory() { 
    var body = 'Reading JS SDK documentation'; 
FB.api('/me/feed', 'post', { message: body }, function(response) { 
    if (!response || response.error) { 
    alert('Error occured'); 
    } else { 
    alert('Post ID: ' + response.id); 
    } 
}); 
} 
</script> 

내 사이트에서 FB에 게시 달성했다,하지만 난에 위의 코드를 교체 시도

<a href="#" onClick="publishStory();" class="sendFeed"><br><font style="color:#FFF; text-decoration:none;padding-left:27px;">post to wall</font></a><br> 
<script> 
function publishStory() { 
    FB.ui({ 
    method: 'feed', 
    name: 'message name', 
    caption: 'message caption ', 
    description: 'description goes here', 
    link: 'the url current page', 
    picture: 'if you want to add an image' 
    }, 
    function(response) { 
    console.log('publishStory response: ', response); 
    }); 
    return false; 
} 
</script> 

는 ... FB.ui를 사용하여 링크를 통해서만이었다 그러나 매번 오류가 발생합니다.

사용자 FB 벽의 게시물이 실제로 사이트의 persay에서 오는 것이 아니라면, 벽에서 사용자가 보낸 게시물인데 기본적으로 "나는 ladala.com에 게시물을 작성했습니다. , 당신은 그것을 조사해야한다. "

이제 게시를 제출하는 작업을 통해 FB.ui를 실행하는 방법을 알아야합니다.

+0

JS SDK는 이러한 종류의 기능을 지원합니다. 가능성을 사용하고 있습니까? –

+0

완전히 정직한 spoony이기 위하여 나는 모른다 ... 당신은 말하고있다, http://developers.facebook.com/docs/reference/javascript/, 정확합니까? –

+0

예. JS SDK를 사용하여 사람들이 읽은 기사 나 시청 한 동영상, 구현하기가 매우 쉬운 API와 같은 API를 호출 할 수 있습니다. 사용자에게 벽에 물건을 공유하도록 사용자에게 요청할 수도 있습니다 (http://developers.facebook.com/docs/reference/javascript/FB.ui/) (https://developers.facebook.com/docs/reference/ 대화 상자/피드 /). 나는 이것이 당신이 찾고있는 것이거나, 당신의 응용 프로그램에 구현하는 것이 합리적인지 확실하지 않습니다. –

답변

1

대화를 바탕으로, 나는 대답에 더 완전한 설명을 넣을 것이라고 생각했습니다.

JavaScript SDK를 사용하여 전화를 걸 수 있습니다.

먼저로드 섹션의 설명에 따라 https://developers.facebook.com/docs/reference/javascript/에서 JavaScript SDK를로드해야합니다.

일단 페이지로로드되면 보려는 두 개의 호출은 FB.getLoginStatus 및 FB.api입니다. FB.getLoginStatus는 사용자가 페이스 북에 로그인했는지 여부와 응용 프로그램을 승인했는지 여부를 알려주는 응답을 제공합니다. This link은 getLoginStatus의 기능을 설명하지만 짧게는 response.connected를 확인해야합니다 (필요한 경우 사용자 권한을 확인하기 위해 다른 호출을 수행해야 할 수도 있음).

사용자가 로그인하여 앱을 승인 한 경우 FB.api을 사용하여 API 호출을 시도 할 수 있습니다. 이렇게하려면 사용자가 publish_stream 권한을 허용해야 할 수 있습니다.

코드는 다음과 같을 것이다 :

//Do FB initialization 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    FB.api('/me/feed', 'post', { message: body }, function(response) { 
     if (!response || response.error) { 
     //Post was successful 
     } 
    }); 
    } 
}); 

이것은 당신이 원하는 방식으로 트리거 될 수 있습니다. 페이지로드시 다른 이벤트가 완료되면 클릭하거나 클릭하십시오.

이것은 구현하기위한 하나의 방법 일뿐입니다. 또한 FB 응용 프로그램과 무언가를 공유하려고하는데 작동하지 않는 경우이를 수행하는 데 필요한 모든 권한이 있는지 확인해야합니다.

+0

안녕하세요, 내 원래 질문에 대한 업데이트에 응답을 입력하겠습니다. 그렇게하면 내 탐험을위한 부동산이 좀 더 생깁니다. –

관련 문제