仅获取用户名和 ID
Only Getting User Name and ID
我正在使用 codeigniter 并将 Facebook PHP SDK 实施到我的网站中,以便用户能够登录。
一切顺利,但我不知道为什么我只能得到他们的名字和身份证。
这是我从某处获得的我的库的代码:
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;
}
这是我的控制器:
首先从我的网站直接转到 Facebook
public function index() {
$this->load->library('facebook');
redirect($this->facebook->login_url());
}
然后 facebook 将其重定向回我的网站 (myweb.com/index.php/getUSer)
public function getUser() {
$this->load->library('facebook');
$user = $this->facebook->getUser();
echo "<pre>";
print_r($user);
}
然而结果只有:
Array
(
[name] => Iyal
[id] => 143426842340043
)
我的问题是,如何获取用户的完整信息,例如电子邮件地址、个人资料图片等。
提前致谢。
默认情况下,当通过 Facebook 检索用户的个人资料时 API 会返回一组有限的字段,例如您正在获取的字段。
您必须在对 Graph API 的请求中包含您希望从中获取信息的字段。个人资料字段列表可用 here。
您需要做的是使用演示的方法 here.
将这些附加字段添加到库中发出的请求中
例如,在您的情况下,如果除了标准数据之外您还想获取用户的电子邮件地址,您可以在您的库中添加这样的方法:
public function get_userWithEmail() {
if ( $this->session ) {
/**
* Retrieve User’s Profile Information
*/
// Graph API to request user data
$request = ( new FacebookRequest( $this->session, 'GET', '/me?fields=id,name,email' ) )->execute();
// Get response as an array
$user = $request->getGraphObject()->asArray();
return $user;
}
return false;
}
请注意 API 您的库目标版本是旧版本。 您最好重写它以使用最新版本以确保它在未来得到支持。文档 here 给出了一个很好的概述,并且在保留原始结构的同时更改库的哪些部分应该足够明显。
我正在使用 codeigniter 并将 Facebook PHP SDK 实施到我的网站中,以便用户能够登录。
一切顺利,但我不知道为什么我只能得到他们的名字和身份证。
这是我从某处获得的我的库的代码:
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;
}
这是我的控制器:
首先从我的网站直接转到 Facebook
public function index() {
$this->load->library('facebook');
redirect($this->facebook->login_url());
}
然后 facebook 将其重定向回我的网站 (myweb.com/index.php/getUSer)
public function getUser() {
$this->load->library('facebook');
$user = $this->facebook->getUser();
echo "<pre>";
print_r($user);
}
然而结果只有:
Array
(
[name] => Iyal
[id] => 143426842340043
)
我的问题是,如何获取用户的完整信息,例如电子邮件地址、个人资料图片等。
提前致谢。
默认情况下,当通过 Facebook 检索用户的个人资料时 API 会返回一组有限的字段,例如您正在获取的字段。
您必须在对 Graph API 的请求中包含您希望从中获取信息的字段。个人资料字段列表可用 here。
您需要做的是使用演示的方法 here.
将这些附加字段添加到库中发出的请求中例如,在您的情况下,如果除了标准数据之外您还想获取用户的电子邮件地址,您可以在您的库中添加这样的方法:
public function get_userWithEmail() {
if ( $this->session ) {
/**
* Retrieve User’s Profile Information
*/
// Graph API to request user data
$request = ( new FacebookRequest( $this->session, 'GET', '/me?fields=id,name,email' ) )->execute();
// Get response as an array
$user = $request->getGraphObject()->asArray();
return $user;
}
return false;
}
请注意 API 您的库目标版本是旧版本。 您最好重写它以使用最新版本以确保它在未来得到支持。文档 here 给出了一个很好的概述,并且在保留原始结构的同时更改库的哪些部分应该足够明显。