Facebook graph api 如何检索用户好友列表和显示?

Facebook graph api 如何检索用户好友列表和显示?,facebook-graph-api,facebook-php-sdk,Facebook Graph Api,Facebook Php Sdk,(对不起我的英语) 我正在使用php和Facebook php sdk 4.0进行开发。我正在使用FacebookRedirectLoginHelper.php让用户授权访问他们的信息。我获取他们的facebook id并将其存储在数据库表Users{int UserID FK,nvarchar(max)UserName,nvarchar(max)facebook id}中。我想列出他们正在使用web应用程序的FaceBook好友。这怎么可能呢?我不能只是更改行: 新建facebook请求($s

(对不起我的英语)

我正在使用php和Facebook php sdk 4.0进行开发。我正在使用FacebookRedirectLoginHelper.php让用户授权访问他们的信息。我获取他们的facebook id并将其存储在数据库表Users{int UserID FK,nvarchar(max)UserName,nvarchar(max)facebook id}中。我想列出他们正在使用web应用程序的FaceBook好友。这怎么可能呢?我不能只是更改行:

新建facebook请求($session,'GET','me')

新建facebook请求($session,'GET','me/friends')

?

require_once('Facebook/FacebookSession.php');
需要_一次('Facebook/Facebook重定向loginhelper.php');
需要_一次('Facebook/FacebookRequest.php');
需要_一次('Facebook/FacebookResponse.php');
只需_一次('Facebook/FacebookSDKException.php');
需要_一次('Facebook/FacebookRequestException.php');
需要_一次('Facebook/Facebook authorizationexception.php');
需要一次_('Facebook/GraphObject.php');
使用Facebook\FacebookSession;
使用Facebook\FacebookRedirectLoginHelper;
使用Facebook\FacebookRequest;
使用Facebook\FacebookResponse;
使用Facebook\FacebookSDKException;
使用Facebook\FacebookRequestException;
使用Facebook\FacebookAuthorizationException;
使用Facebook\GraphObject;
//具有应用程序id(APPID)和机密(secret)的初始化应用程序
FacebookSession::setDefaultApplication('XXX','XXX');
//具有重定向uri的登录帮助程序
$helper=新的FacebookRedirectLoginHelper('http://livescoreapp.azurewebsites.net/' );
试一试{
$session=$helper->getSessionFromRedirect();
}捕获(FacebookRequestException$ex){
//当Facebook返回错误时
}捕获(例外$ex){
//验证失败或其他本地问题时
}
?>
欢迎
此代码打印出的内容:


!

要获取用户的好友,您必须在用户登录时请求
user\u friends
权限:

$friends = (new FacebookRequest( $session, 'GET', '/me/friends' ))->execute()->getGraphObject()->asArray();
echo '<pre>' . print_r( $friends, 1 ) . '</pre>';
然后,您可以按如下方式调用API:

<?php

// added in v4.0.5
require_once( 'Facebook/FacebookHttpable.php' );
require_once( 'Facebook/FacebookCurl.php' );
require_once( 'Facebook/FacebookCurlHttpClient.php' );

// added in v4.0.0
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/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );

// added in v4.0.5
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;

// added in v4.0.0
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

// start session
session_start();

// init app with app id and secret
FacebookSession::setDefaultApplication( 'XXX','YYY' );

// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://livescoreapp.azurewebsites.net/' );

// see if a 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 $e ) {
    // catch any exceptions
    $session = null;
  }

} else {
  // no session exists

  try {
    $session = $helper->getSessionFromRedirect();
  } catch( FacebookRequestException $ex ) {
    // When Facebook returns an error
  } catch( Exception $ex ) {
    // When validation fails or other local issues
    echo $ex->message;
  }

}

// see if we have a session
if ( isset( $session ) ) {

  // save the session
  $_SESSION['fb_token'] = $session->getToken();
  // create a session using saved token or the new one we generated at login
  $session = new FacebookSession( $session->getToken() );

  // graph api request for user data

  $friends = (new FacebookRequest( $session, 'GET', '/me/friends' ))->execute()->getGraphObject()->asArray();
echo '<pre>' . print_r( $friends, 1 ) . '</pre>';



  // print logout url using session and redirect_uri (logout.php page should destroy the session)
  echo '<a href="' . $helper->getLogoutUrl( $session, 'http://yourwebsite.com/app/logout.php' ) . '">Logout</a>';

} else {
  // show login url
  echo '<a href="' . $helper->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
}

?>
$friends=(新的facebook请求($session,'GET','/me/friends'))->execute()->getGraphObject()->asArray();
回显“”。印刷品($friends,1)。”;

完整的解决方案。

完整的解决方案,然后:


请参阅FacebookRedirectLoginHelper.php中的90行。。。。看起来像

公共函数getLoginUrl($scope=array(),$version=null)

我通过

公共函数getLoginUrl($scope=array('email'),$version=null)

而且很有效!!!警察局。将所需权限放入范围数组(&S)

问候

$fb=new Facebook\Facebook([/*…*/]);
$helper=$fb->getRedirectLoginHelper();
$permissions=['email','user_likes'];//可选择的
$loginUrl=$helper->getLoginUrl('http://{your-website}/login callback.php',$permissions);
回声';

Hm,我返回的数组是空的?哦,现在它可以工作了。让我弟弟访问链接
$friends = (new FacebookRequest( $session, 'GET', '/me/friends' ))->execute()->getGraphObject()->asArray();
echo '<pre>' . print_r( $friends, 1 ) . '</pre>';
<?php

// added in v4.0.5
require_once( 'Facebook/FacebookHttpable.php' );
require_once( 'Facebook/FacebookCurl.php' );
require_once( 'Facebook/FacebookCurlHttpClient.php' );

// added in v4.0.0
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/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );

// added in v4.0.5
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;

// added in v4.0.0
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

// start session
session_start();

// init app with app id and secret
FacebookSession::setDefaultApplication( 'XXX','YYY' );

// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://livescoreapp.azurewebsites.net/' );

// see if a 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 $e ) {
    // catch any exceptions
    $session = null;
  }

} else {
  // no session exists

  try {
    $session = $helper->getSessionFromRedirect();
  } catch( FacebookRequestException $ex ) {
    // When Facebook returns an error
  } catch( Exception $ex ) {
    // When validation fails or other local issues
    echo $ex->message;
  }

}

// see if we have a session
if ( isset( $session ) ) {

  // save the session
  $_SESSION['fb_token'] = $session->getToken();
  // create a session using saved token or the new one we generated at login
  $session = new FacebookSession( $session->getToken() );

  // graph api request for user data

  $friends = (new FacebookRequest( $session, 'GET', '/me/friends' ))->execute()->getGraphObject()->asArray();
echo '<pre>' . print_r( $friends, 1 ) . '</pre>';



  // print logout url using session and redirect_uri (logout.php page should destroy the session)
  echo '<a href="' . $helper->getLogoutUrl( $session, 'http://yourwebsite.com/app/logout.php' ) . '">Logout</a>';

} else {
  // show login url
  echo '<a href="' . $helper->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
}

?>
$fb = new Facebook\Facebook([/* . . . */]);

$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes']; // optional
$loginUrl = $helper->getLoginUrl('http://{your-website}/login-callback.php', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';