如何使用 SDK 4.4.0 和 API 2.3 从 facebook 用户配置文件中检索电子邮件?
How to retrieve email from facebook user profile with SDK 4.4.0 and API 2.3?
我有一个关于使用 Facebook SDK 4.4.0 / API 2.3.
检索用户电子邮件的小问题
我通过开发人员 facebook 区域创建了我的应用程序,实际上我在 PHP 脚本中的目标是通过我的 facebook 应用程序登录 Facebook,以检索已登录用户的一些信息,以在我的网站中创建一个基本的轮廓。
我有两个 PHP 脚本,第一个获取 facebook 的登录 url,第二个在身份验证后检索用户数据。
login.php
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$s_facebook_login_url = $o_helper->getLoginUrl();
通过这个 $s_facebook_login_url 我登录 facebook 应用程序,以用户身份验证自己,然后通过参数 [=40= 返回到我的第二个脚本]$s_facebook_login_backurl。在这里,我有从我的个人资料中获取数据的命令。我需要的一切都很好,除了电子邮件,找不到这个元素。
registration.php
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_social = Facebook\FacebookSession::newAppSession();
try {
$o_social->validate();
}
catch(...){
// exceptions
}
或
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$o_social = $o_helper->getSessionFromRedirect();
然后
$s_request = '/me?fields=id,name,email,last_name,first_name,middle_name';
$o_request = new Facebook\FacebookRequest($o_social, 'GET', $s_request);
$o_response = $o_request->execute();
$o_graph_object = $o_response->getGraphObject();
$a_media = $o_graph_object->asArray();
$s_facebook_id = $a_media['id'];
$s_facebook_name = $a_media['first_name'];
$s_facebook_inbetweenname = $a_media['middle_name'];
$s_facebook_surname = $a_media['last_name'];
$s_facebook_email = $a_media['email'];
问题是最后一个变量 $s_facebook_email 完全是空的。
在 facebook 的开发人员区域,在 Graph API Explorer 中我什至测试了我对 facebook 应用程序的 GET 请求,并且检索了电子邮件,我设置了用户的权限(在用户数据权限中) 和电子邮件(在扩展权限中),但通过 SDK,电子邮件是唯一缺少的元素。
我什至尝试从我的用户设置中删除该应用程序,然后再次进行身份验证,但没有成功。
有没有人有一些想法来获取电子邮件?
我在网上发现几乎总是相同的建议,但可能我错过了什么。
提前致谢
根据 docs,您可以指定要向用户请求的权限:
# login.php
$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>';
我有一个关于使用 Facebook SDK 4.4.0 / API 2.3.
检索用户电子邮件的小问题我通过开发人员 facebook 区域创建了我的应用程序,实际上我在 PHP 脚本中的目标是通过我的 facebook 应用程序登录 Facebook,以检索已登录用户的一些信息,以在我的网站中创建一个基本的轮廓。 我有两个 PHP 脚本,第一个获取 facebook 的登录 url,第二个在身份验证后检索用户数据。
login.php
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$s_facebook_login_url = $o_helper->getLoginUrl();
通过这个 $s_facebook_login_url 我登录 facebook 应用程序,以用户身份验证自己,然后通过参数 [=40= 返回到我的第二个脚本]$s_facebook_login_backurl。在这里,我有从我的个人资料中获取数据的命令。我需要的一切都很好,除了电子邮件,找不到这个元素。
registration.php
require_once(dirname(__FILE__).'/libs/facebook-php-sdk-v4-4.0-dev/autoload.php');
Facebook\FacebookSession::setDefaultApplication($a_config['settings']['facebook_app_id'], $a_config['settings']['facebook_app_secret']);
$o_social = Facebook\FacebookSession::newAppSession();
try {
$o_social->validate();
}
catch(...){
// exceptions
}
或
$o_helper = new Facebook\FacebookRedirectLoginHelper($s_facebook_login_backurl);
$o_social = $o_helper->getSessionFromRedirect();
然后
$s_request = '/me?fields=id,name,email,last_name,first_name,middle_name';
$o_request = new Facebook\FacebookRequest($o_social, 'GET', $s_request);
$o_response = $o_request->execute();
$o_graph_object = $o_response->getGraphObject();
$a_media = $o_graph_object->asArray();
$s_facebook_id = $a_media['id'];
$s_facebook_name = $a_media['first_name'];
$s_facebook_inbetweenname = $a_media['middle_name'];
$s_facebook_surname = $a_media['last_name'];
$s_facebook_email = $a_media['email'];
问题是最后一个变量 $s_facebook_email 完全是空的。
在 facebook 的开发人员区域,在 Graph API Explorer 中我什至测试了我对 facebook 应用程序的 GET 请求,并且检索了电子邮件,我设置了用户的权限(在用户数据权限中) 和电子邮件(在扩展权限中),但通过 SDK,电子邮件是唯一缺少的元素。
我什至尝试从我的用户设置中删除该应用程序,然后再次进行身份验证,但没有成功。 有没有人有一些想法来获取电子邮件? 我在网上发现几乎总是相同的建议,但可能我错过了什么。
提前致谢
根据 docs,您可以指定要向用户请求的权限:
# login.php
$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>';