Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得用户';s的Facebook页面列表_Facebook_Facebook Graph Api_Facebook Javascript Sdk - Fatal编程技术网

如何获得用户';s的Facebook页面列表

如何获得用户';s的Facebook页面列表,facebook,facebook-graph-api,facebook-javascript-sdk,Facebook,Facebook Graph Api,Facebook Javascript Sdk,这就是我要找的。我已经使用FB.api成功地将用户登录到Facebook,现在我需要获取用户的Facebook页面列表(页面状态已更改为“已发布”)。我有一个Facebook应用程序,我用它来获取Facebook页面列表,还有一个FB登录按钮,通过它可以启用用户登录。我的代码看起来像 <!DOCTYPE html> <html> <head> <title>Facebook Login JavaScript Example<

这就是我要找的。我已经使用FB.api成功地将用户登录到Facebook,现在我需要获取用户的Facebook页面列表(页面状态已更改为“已发布”)。我有一个Facebook应用程序,我用它来获取Facebook页面列表,还有一个FB登录按钮,通过它可以启用用户登录。我的代码看起来像

<!DOCTYPE html>
  <html>
  <head>
     <title>Facebook Login JavaScript Example</title>
     <meta charset="UTF-8"> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-  1.7.1.min.js">       </script>
  </head>
<body>
<script>
    function statusChangeCallback(response) {
        console.log('statusChangeCallback');
        console.log(response);

        if (response.status === 'connected') {
            document.getElementById('status').innerHTML = response.authResponse.userID;
            document.getElementById('access').innerHTML = response.authResponse.accessToken;
            testAPI();
        } else if (response.status === 'not_authorized') {
           document.getElementById('status').innerHTML = 'Please log ' +
              'into this app.';
        } else {
          document.getElementById('status').innerHTML = 'Please log ' +
              'into Facebook.';
        }
    }
    function checkLoginState() {
        FB.getLoginStatus(function (response) {
            statusChangeCallback(response);
        });
    }
    function testAPI() {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me', function (response) {
            console.log('Successful login for: ' + response.name);
            document.getElementById('status').innerHTML =
              'Thanks for logging in, ' + response.name + '!';
        FB.api('/me/accounts', 'GET', '', function (response) {
                alert("On get");
                console.log(response);
                if (!response || response.error) {
                    alert(JSON.stringify(response.error));
                }
                else {
                    if (response.data.length > 0) { //-- Check for page list
                        alert("On page List")
                        acc_token = response.data[0].access_token; //== Change Accesstoken If a page is exist
                    }
                    else {
                        alert("On NOT");
                    }

                }
            });
        });
    }
</script>
<div id="status"></div>
  <div id="access"></div>
    <div id="page"></div>
   <div id="fb-root"></div>

  <script>

  (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#xfbml=1&appId=810475512349563&   version=v2.0";
 fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-login-button" data-scope="manage_pages" data-max-rows="1" data-size="medium" data-show-  faces="false" data-auto-logout-link="false" onlogin="checkLoginState();" ></div>

</body>
</html> 

Facebook登录JavaScript示例
函数statusChangeCallback(响应){
log('statusChangeCallback');
控制台日志(响应);
如果(response.status===“已连接”){
document.getElementById('status').innerHTML=response.authResponse.userID;
document.getElementById('access').innerHTML=response.authResponse.accessToken;
testAPI();
}else if(response.status===“未授权”){
document.getElementById('status')。innerHTML='Please log'+
“进入此应用程序。”;
}否则{
document.getElementById('status')。innerHTML='Please log'+
“进入Facebook。”;
}
}
函数checkLoginState(){
FB.getLoginStatus(函数(响应){
状态更改回调(响应);
});
}
函数testAPI(){
log('欢迎!获取您的信息…);
FB.api('/me',函数(响应){
console.log('successfulllogin for:'+response.name);
document.getElementById('status').innerHTML=
'感谢您登录,'+response.name+'!';
api('/me/accounts','GET','',函数(响应){
警觉(“待命”);
控制台日志(响应);
如果(!response | | response.error){
警报(JSON.stringify(response.error));
}
否则{
如果(response.data.length>0){/--检查页面列表
警报(“页面列表上”)
acc_令牌=响应。数据[0]。访问_令牌;//==如果页面存在,则更改访问令牌
}
否则{
警惕(“不在”);
}
}
});
});
}
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js#xfml=1&appId=810475512349563&version=v2.0”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
请注意,我使用了

<div class="fb-login-button" data-scope="manage_pages" data-max-rows="1" data-size="medium" data-show-  faces="false" data-auto-logout-link="false" onlogin="checkLoginState();" ></div> 


用于用户登录和获取页面列表。但它总是返回“data[]”

您定义了两种不同的登录解决方案:login按钮和FB.login。如果要使用Facebook按钮,请选择登录按钮;如果要使用自己的登录按钮设计,请选择FB.Login

也就是说,登录按钮没有必要的作用域参数:

<div class="fb-login-button" data-scope="manage_pages" ...></div>

资料来源:

顺便说一句,你的代码确实有问题<代码>窗口.fbAsyninit应在页面加载时使用,而不是在单击按钮时使用。而且FB.login是不必要的,因为它在使用login按钮后被调用


另外,请确保您正在尝试使用的用户是该应用程序的管理员,否则您必须首先完成审查过程:

我将用实际场景解释。我们有一些客户,他们有自己的Facebook业务页面和自己的Facebook帐户。因此,在我们的应用程序中,我们有一个选项可以将他们通过我们的应用程序创建的服务推广到他们的Facebook页面。因此,为了做到这一点,我创建了一个Facebook应用程序,并使用该应用程序成功登录该用户,现在我需要获取该用户的Facebook业务页面列表。这样我们就可以显示一个带有这些抓取页面列表的弹出窗口,用户可以选择他们希望发布其报价的页面。好吧,我认为使用不同的应用程序没有问题,只要用户使用页面管理员帐户进行授权。那么我的代码会有什么问题,为什么它不返回用户页面。您是否正在尝试使用该应用程序的管理员用户?确保登录弹出窗口中提到了manage_pages权限。代码与上面完全相同。我添加了scope manage_页面,我自己是应用程序的管理员。此js.src=“//connect.facebook.net/en_US/sdk.js#xfml=1&appId=810475512349563&version=v2.0”中是否存在任何问题;