2014-11-14 28 views
1

我正在開發web應用程序使用像本地主機中的按鈕圖API,但它不能正常工作。 當用戶點擊like按鈕時,如果fb登錄狀態是'連接',那麼它調用圖形api創建像像url一樣的用戶像對象。問題:用戶的狀態是「連接」,但當調用創建對象的URL時,圖形API總是響應「需要擴展權限:publish_actions」。Facebook登錄javascript sdk不能與publish_actions範圍

這裏是我的代碼:

window.fbAsyncInit = function() { 

    FB.init({ 
     appId: MY_APP_ID, 
     status: true, 
     cookie: true, 
     xfbml: true 
    }); 

}; 

(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/vi_VN/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

///////////////////////// 
// Login 
//////////////////////// 
function fbLogin() { 
    FB.login(function(response) { 
     if (response.authResponse) { 
      FB.api('/me', function(response) { 
       //something 
      }); 
     } 
    },{scope: 'publish_actions,publish_stream'}); 
} 

///////////////////////// 
// btnLike heart click 
//////////////////////// 
jQuery('.hit').click(function() { 
    var current = jQuery(this); 
    var postId = current.attr('id'); 
    var url = current.parent().attr('data-href'); 
    var class_string = current.attr('class'); 
    var class_array = class_string.split(' '); 

    if (class_array.indexOf("liked") != -1) { // found : liked 
    } else { // not found : not liked 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
       FB.api('me/og.likes', 'post', { 
        /*test*/ 
        object : getTestPermalink(url), 
       }, function(res) { 
        if (res.id) { //hit like successful 
         jQuery.post(
          MyAjax.ajaxurl, 
          { action: 'set_post_likes', postId: postId }, 
          function(result) { 
           current.addClass('liked'); 
           current.parent().children('.count').html(result.split('-')[0]); 
          } 
         ); 
        } 
       }); 
      } else { 
       fbLogin(); 
      } 
     }); 
    } 
}); 

有人能幫助我嗎? 對不起我的英文不好..

回答

1
  • publish_stream被棄用(因爲年?),你只需要publish_actions。
  • 您在異步回調函數中調用FB.login。您必須直接在用戶交互(鼠標點擊)上調用它,而不是在FB.getLoginStatus的回調中。

也就是說,如果您不想與您的應用的管理員,開發人員或測試人員一起嘗試,通常會彈出權限錯誤。 publish_actions在其他用戶可以授權之前,需要獲得Facebook的批准。退房登錄審查:https://developers.facebook.com/docs/apps/review/login

+0

非常感謝,但我怎麼能解決它?請幫助我.. – 2014-11-15 02:09:00

+0

嘗試與應用程序管理員/開發人員或通過審查過程。當然還有刪除「publish_stream」。 – luschn 2014-11-15 09:44:13