簡體   English   中英

Facebook Js Sdk,publish_actions無法正常工作

[英]Facebook Js Sdk, publish_actions not working

我正在使用javascript sdk,並且已經發送了對我的publish_action的審核,它們已被批准。 無論如何我不能發表我的文章,我要求范圍的方式是這樣的:

FB.login(function(response) 
{ 
...
}, {scope: 'email,publish_actions'}); 

當我嘗試發布時,返回錯誤為:

(#200) The user hasn't authorized the application to perform this action

的確如此,因為在Facebook模式登錄中,僅顯示讀取配置文件信息的權限,而不顯示發布的權限。 我該如何解決?

編輯

我添加了完整的代碼以更好地解釋:

<script type="text/javascript">


/***FACEBOOK***/


    function fb_publish_Photo(immaginelink,idfoto){
             var testo_share= $("#share_text").text();


             var wallPost = {
                message: testo_share,
                link:immaginelink,
                picture:immaginelink

              };
              console.log(wallPost);
              FB.api('/me/feed', 'post', wallPost , function(response) {
                if (!response || response.error) {

                    console.log(response.error);
                  alert('Failure! ' + response.error + ' You may logout once and try again');


                } else {
                 // alert('Success! Post ID: ' + response.id);
                  var PostId=response.id;
                  if(response.id!=null && response.id!=''){

                     FB.getLoginStatus(function (response) {
                        if (response.authResponse) {



                        } else {
                            // do something...maybe show a login prompt
                        }
                    }, {scope: 'publish_actions'});
                  }
                }
                console.log(response);
              }, { scope: 'publish_actions'});
    }

    function statusChangeCallback(response) {
        console.log('statusChangeCallback');
        console.log(response);
        // The response object is returned with a status field that lets the
        // app know the current login status of the person.
        // Full docs on the response object can be found in the documentation
        // for FB.getLoginStatus().
        if (response.status === 'connected') {
          // Logged into your app and Facebook.
          //fb_login();

        } else if (response.status === 'not_authorized') {

        } else {

        }
      }

    function fb_login(){
        FB.login(function(response) {

            if (response.authResponse) {
                console.log('Welcome!  Fetching your information.... ');
                //console.log(response); // dump complete info
                access_token = response.authResponse.accessToken; //get access token
                user_id = response.authResponse.userID; //get FB UID

               FB.api('/me?fields=email,first_name,last_name,name', function(response) {
                    //chiamata ajax per registrare/loggare l'utente
                    console.log(response);

                });

            } else {
                //user hit cancel button
                console.log('User cancelled login or did not fully authorize.');

            }
        }, {
            scope: 'publish_actions'
        });
    }
      // This function is called when someone finishes with the Login
      // Button.  See the onlogin handler attached to it in the sample
      // code below.
      function checkLoginState() {
        FB.getLoginStatus(function(response) {
          statusChangeCallback(response);
        });
      }

      window.fbAsyncInit = function() {
          FB.init({
            appId      : 'xxxxxxxxxxx',
            cookie     : true,  // enable cookies to allow the server to access 
                                // the session
            xfbml      : true,  // parse social plugins on this page
            version    : 'v2.4' // use version 2.4
          });

          // Now that we've initialized the JavaScript SDK, we call 
          // FB.getLoginStatus().  This function gets the state of the
          // person visiting this page and can return one of three states to
          // the callback you provide.  They can be:
          //
          // 1. Logged into your app ('connected')
          // 2. Logged into Facebook, but not your app ('not_authorized')
          // 3. Not logged into Facebook and can't tell if they are logged into
          //    your app or not.
          //
          // These three cases are handled in the callback function.

          FB.getLoginStatus(function(response) {
            statusChangeCallback(response);
          });

      };

      // Load the SDK asynchronously
      (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/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));

    /***end FB***/
</script>

編輯

這是我在Facebook文檔中可以找到的唯一參考:

function myFacebookLogin() {
  FB.login(function(){}, {scope: 'publish_actions'});
}

要么

FB.login(function(){
  // Note: The call will only work if you accept the permission request
  FB.api('/me/feed', 'post', {message: 'Hello, world!'});
}, {scope: 'publish_actions'});

看起來很簡單,在登錄呼叫中我必須請求權限,那么為什么發布權限對話框未出現在批准的應用程序中?

編輯

在此處輸入圖片說明

這是我的應用程序權限的屏幕

Publish_actions范圍現在似乎可以正常工作。 我有兩次范圍要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM