Я создаю SDK facebook v2.3 в CI 2, но я только что получил подробную информацию о имени и идентификаторе, мне нужна подробная информация электронной почты от входа пользователя.Facebook php SDK Просто отобразите Имя и ID
Результат print_r является
Array ([имя] => Alan El-Nino Мальмстин [ID] => 1111310922216558)
У меня есть разрешение на создание электронной почты, но до сих пор не работает
public function FBLogin()
{
$this->load->library('facebook');
$login_url = $this->facebook->login_url();
$get_user = $this->facebook->get_user();
if($get_user){
//echo $this->facebook->get_email();
print_r($get_user);
}else{
redirect('login_url');
}
И Библиотека Facebook.php
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// Autoload the required files
require_once(APPPATH . 'libraries/Facebook/autoload.php');
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/GraphSessionInfo.php');
require_once('Facebook/Entities/AccessToken.php');
require_once('Facebook/Entities/SignedRequest.php');
require_once('Facebook/HttpClients/FacebookHttpable.php');
require_once('Facebook/HttpClients/FacebookCurl.php');
require_once('Facebook/HttpClients/FacebookCurlHttpClient.php');
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
class Facebook {
var $ci;
var $helper;
var $session;
var $permissions;
public function __construct() {
$this->ci =& get_instance();
$this->permissions = $this->ci->config->item('permissions', 'facebook');
// Initialize the SDK
FacebookSession::setDefaultApplication($this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook'));
$this->helper = new FacebookRedirectLoginHelper($this->ci->config->item('redirect_url', 'facebook'));
if ($this->ci->session->userdata('fb_token')) {
$this->session = new FacebookSession($this->ci->session->userdata('fb_token'));
// Validate the access_token to make sure it's still valid
try {
if (! $this->session->validate()) {
$this->session = null;
}
} catch (Exception $e) {
// Catch any exceptions
$this->session = null;
}
} else {
// No session exists
try {
$this->session = $this->helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(Exception $ex) {
// When validation fails or other local issues
}
}
if ($this->session) {
$this->ci->session->set_userdata('fb_token', $this->session->getToken());
$this->session = new FacebookSession($this->session->getToken());
}
}
/**
* Returns the login URL.
*/
public function login_url() {
return $this->helper->getLoginUrl($this->permissions);
}
/**
* Returns the current user's info as an array.
*/
public function get_user() {
if ($this->session) {
/**
* Retrieve User’s Profile Information
*/
// Graph API to request user data
$request = (new FacebookRequest($this->session, 'GET', '/me'))->execute();
// Get response as an array
$user = $request->getGraphObject()->asArray();
return $user;
}
return false;
}
}
Прежде всего, проверьте, действительно ли ваше приложение _using_ v2.3 - посмотрите, какую версию API он показывает на первой странице панели приложений. Если это говорит v2.4, то это означает, что вы не можете пойти ни на один «ниже». И это будет означать, что вам нужно прочитать журнал изменений - то, что изменилось в отношении полей, возвращаемых по умолчанию, описано там. https://developers.facebook.com/docs/apps/changelog#v2_4_changes – CBroe
И у вас есть _sure_ у вас есть разрешение «электронной почты»? Я не вижу, чтобы вы просили его где-нибудь в вашем коде. – CBroe