2011-09-13 4 views
3

나는 2 일 동안 인터넷 검색을했는데 결정적인 것을 찾을 수 없습니다. 내가 만난 모든 결과는 더 이상 작동하지 않는 더 이상 사용되지 않는 코드를 사용합니다. 도와주세요.Facebook JS SDK - 사용 권한 확인 후 벽에 게시

나는, 권한이 이미 부여되어 있지 않은 경우

  • 권한을 얻기 후에 (user_likes, offline_access, publish_stream를) 요청 클릭에 ...

    1. 확인 확장 된 권한에 대한 버튼이 필요합니다 사용자의 벽에 게시물을 게시하는 것은
    2. 가 오프라인 상태 나 사용자에게 벽 게시물을 밀어 허용

    누군가 도움을 줄 수 있습니까?

  • +0

    이 예에서는 OffBySome 덕분입니다. 그것을 보면 솔루션에 매우 가깝지만 response.authResponse로 FB.login 포함을 놓친 것을 알 수 있습니다. 나는 오늘 밤 이것을 구현할 것이고, 나의 발견을보고 할 것이다. – Steve

    +0

    offline_access와 관련하여 사용자 상호 작용없이 게시하려면이 권한이 필요 없음을 다른 사람이 확인할 수 있습니까? 나는 이것이 약간의 회색 영역이라는 것을 이해하지만, 사용자는 이것이 일어나고 있음을 알고 있으며 특별히 그것을 허용하도록 선택해야합니다. 그러나 자동 게시 : true가 비활성화되어 오프라인 사용자의 벽에 게시 할 수있는 기능이 필요하다는 것이 내 이해입니다. 사용자 ID를 사용하면 ** offline_access가 필요없는 ** 인증 토큰 **을 포함해야합니다. – Steve

    +0

    어젯밤에 OffBySome이 게시 한 예제를 구현했으며 멋지게 작동했습니다. 고맙습니다. – Steve

    답변

    9

    아주 간단합니다. FB.login을 호출하여 확장 권한을 얻을 수 있습니다. 그런 다음 FB.ui를 호출하여 상태를 게시 할 수 있습니다 (FB.api를 호출하여/me/feed를 호출하여 사용자 상호 작용없이 게시 할 수 있습니다). 나중에 벽 게시물을 푸시 할 수 있으려면 나중에 사용할 수 있도록 서버에 access_token을 저장해야합니다.

    <!DOCTYPE html> 
    <html> 
    <body> 
    <div id="fb-root"></div> 
    <a href="#" onclick="return postToWall();">Post To Wall</a> 
    <script src="//connect.facebook.net/en_US/all.js"></script> 
    <script> 
        FB.init({ appId: '**appID**', status: true, cookie: true, xfbml: true, oauth: true }); 
    
        function postToWall() { 
        FB.login(function(response) { 
         if (response.authResponse) { 
         FB.ui({ 
          method: 'feed', 
          name: 'Facebook Dialogs', 
          link: 'https://developers.facebook.com/docs/reference/dialogs/', 
          picture: 'http://fbrell.com/f8.jpg', 
          caption: 'Reference Documentation', 
          description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 
         }, 
         function(response) { 
          if (response && response.post_id) { 
          alert('Post was published.'); 
          } else { 
          alert('Post was not published.'); 
          } 
         }); 
         } else { 
         alert('User cancelled login or did not fully authorize.'); 
         } 
        }, {scope: 'user_likes,offline_access,publish_stream'}); 
        return false; 
    } 
    </script> 
    </body> 
    </html> 
    
    +0

    [OAuth2 이전 날짜가 10 월 15 일] (http://developers.facebook.com/blog/post/555/)이므로 모든 앱은 그 후에 OAuth2를 사용해야합니다. 이것을 가능하게하려면'FB.init' 호출에'oauth : true'를 추가하고'perms'를'scope'로 변경해야합니다. – steveax

    +0

    @steveax : 네 말이 맞아. 내가 잊어 버렸던 예를 들고 나왔다. 나는 예제를 업데이트했다. – bkaid

    +0

    다행히 FB 라이브러리 프로토콜에 대한 호출을 원하지 않을 수도 있습니다. 곧 SSL 요구 사항이 주어지면'. – steveax

    관련 문제