Php 使用FacebookGraphAPI获取所有成员列表(来自我自己的一个组)';I don’’我不能得到完整的列表——我的代码中哪一部分出错了?
我开始使用FacebookGraphAPI,并注意到当我试图从我的组(我拥有的)中获取所有成员列表时,回显了用户名,我只得到(大约)4900个用户作为输出-我的组中有15K+用户!!! 为了测试我对每个列表进行了var_dump-ed,它给了我127个数组,其中包含“more elements…”文本,因此我得出结论,回显列表是好的,但获取列表是错误的 我尝试使用Graph API资源管理器获取成员列表,它给出了相同的结果,错误的“下一步”链接带有奇怪的偏移量和限制参数,这些参数没有任何意义,我也没有输入 这是我现在的代码(滚动到“这里很酷”):Php 使用FacebookGraphAPI获取所有成员列表(来自我自己的一个组)';I don’’我不能得到完整的列表——我的代码中哪一部分出错了?,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,我开始使用FacebookGraphAPI,并注意到当我试图从我的组(我拥有的)中获取所有成员列表时,回显了用户名,我只得到(大约)4900个用户作为输出-我的组中有15K+用户!!! 为了测试我对每个列表进行了var_dump-ed,它给了我127个数组,其中包含“more elements…”文本,因此我得出结论,回显列表是好的,但获取列表是错误的 我尝试使用Graph API资源管理器获取成员列表,它给出了相同的结果,错误的“下一步”链接带有奇怪的偏移量和限制参数,这些参数没有任何意义,
这是一个已知的Facebook bug(2年多了),处于低优先级修复中
为了避免这种情况,我认为报废是唯一的最佳选择,不过,为了记录在案,这是自上次评论以来几乎一年后的错误报告,该错误仍然存在。我刚刚开始用这个SDK开发,知道这样的东西存在有点令人沮丧。请注意每个人-为了“帮助”facebook决定修复它,你们都应该订阅这个bug并评论说需要修复它。这是一个bug:developers.facebook.com/bug/267362886791339请大家注意——这是facebook的一个已知bug。为了“帮助”facebook决定修复它,你们所有人都应该订阅这个bug并评论你们需要修复它。这里是错误:developers.facebook.com/bugs/267362886791339
<?php
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/Entities/SignedRequest.php' );
use Facebook\GraphUser;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
$app_id = '13434480350553256103140350';
$app_secret = 'a866dcd372123fc87373a345cvvf34d0e70c3cdf0vvc13db4521basdd99';
$redirect_url = 'http://localhost/test/YellowSpider/src/';
FacebookSession::setDefaultApplication( $app_id, $app_secret );
//helper for redirect
$helper = new FacebookRedirectLoginHelper($redirect_url);
// Requested permissions for the app - optional
$permissions = array(
'email',
'user_location',
'user_birthday',
'user_groups'
);
// Check if existing session exists
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
// Create new session from saved access_token
$session = new FacebookSession( $_SESSION['fb_token'] );
// Validate the access_token to make sure it's still valid
try {
if ( ! $session->validate() ) {
$session = null;
}
} catch ( Exception $ex ) {
// Catch any exceptions
$session = null;
}
} else {
// No session exists
try {
$session = $helper->getSessionFromRedirect(); ////Processes the redirect data from Facebook, if present. Returns a FacebookSession or null.
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
echo $ex->message;
}
}
// Check if a session exists
if ( isset( $session ) ) {
// Save the session
$_SESSION['fb_token'] = $session->getToken();
// Create session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
/********************************* Cool Stuff Here *****************************************/
$request = new FacebookRequest($session, 'GET', '/1501313558474010996619/members'); //Represents a request that will be made against the Graph API.
//From the response - get graph object
$response = $request->execute(); //Returns a Facebook\FacebookResponse from this request, from which a strongly-typed result can be retrieved.
//Throws an exception if the request fails. If the error is returned from Facebook,
//as opposed to a networking issue, a Facebook\FacebookRequestException is thrown.
$graphObject = $response->getGraphObject()->asArray();
var_dump($graphObject);
while($response){
var_dump($graphObject['data']);
//echo $members['id'];
if($response->getRequestForNextPage() != null){
$response = $response->getRequestForNextPage()->execute();
var_dump($response->getRequestForNextPage());
continue;
}else{
break;
}
}
/********************************* END Cool Stuff Here *****************************************/
// Create the logout URL (logout page should destroy the session)
$logoutURL = $helper->getLogoutUrl( $session, 'http://localhost/test/YellowSpider/src/' );
session_destroy(); // added this, clears all sessions.
echo '<a href="' . $logoutURL . '">Log out</a>';
} else {
// No session
// Get login URL
$loginUrl = $helper->getLoginUrl( $permissions );
echo '<a href="' . $loginUrl . '">Log in</a>';
}