Php 使用facebook SDK 4.0获取电子邮件
这是我的密码。我正在尝试获取用户电子邮件,但我无法。昨天我收到的邮件是正确的,但我错把文件删除了。我现在错过了什么 在login_fb.php中,我这样调用电子邮件:Php 使用facebook SDK 4.0获取电子邮件,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,这是我的密码。我正在尝试获取用户电子邮件,但我无法。昨天我收到的邮件是正确的,但我错把文件删除了。我现在错过了什么 在login_fb.php中,我这样调用电子邮件:echo$\u SESSION['email'] session_start(); //added in v4.0.0 require_once 'autoload.php'; use Facebook\FacebookSession; use Facebook\FacebookRedirectLoginHelper; use Fa
echo$\u SESSION['email']代码>
session_start();
//added in v4.0.0
require_once 'autoload.php';
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;
//init app with app id and secret
FacebookSession::setDefaultApplication( '','' );
//login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://www.myurl/facebook/fbconfig.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
//when facebook returns an error
} catch( Exception $ex ) {
//when validation fails or other local issues
}
if (isset($session)) {
$request = new FacebookRequest( $session, 'GET', '/me?locale=en_US&fields=name,first_name,last_name,email,gender' );
$loginUrl = $helper->getLoginUrl( array(
'scope' => 'email'
));
$response = $request->execute();
//response
$graphObject = $response->getGraphObject();
$fbid = $graphObject->getProperty('id'); // Facebook ID
$full_name = $graphObject->getProperty('name'); // Facebook full name
$first_name = $graphObject->getProperty('first_name'); // Facebook first name
$last_name = $graphObject->getProperty('last_name'); // Facebook last name
$email = $graphObject->getProperty('email'); // Facebook email
$birthday = $graphObject->getProperty('birthday'); // Facebook birthday
$gender = $graphObject->getProperty('gender'); // Facebook gender
/* ---- session variables -----*/
$_SESSION['fbid'] = $fbid;
$_SESSION['full_name'] = $full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email'] = $email;
$_SESSION['birthday'] = $birthday;
$_SESSION['gender'] = $gender;
/* ---- header location after session ----*/
header("Location: ../login_fb.php");
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
您正在调用$helper->getLoginUrl
两次。第一次在作用域中有电子邮件
,但没有使用函数的返回值执行任何操作;第二次你根本不需要任何权限
完全删除对该方法的第一个调用。多次调用它将导致存储到会话中的随机状态
值出现问题。然后在重定向到该URL之前,将权限添加到剩余调用中的作用域中
仅供参考:自动将用户重定向到登录对话框被视为不良做法和不良用户体验;虽然出于测试目的还可以,但在真正面向用户的应用程序中,您应该仅在用户请求时触发登录。您正在调用$helper->getLoginUrl
两次。第一次在作用域中有电子邮件
,但没有使用函数的返回值执行任何操作;第二次你根本不需要任何权限
完全删除对该方法的第一个调用。多次调用它将导致存储到会话中的随机状态
值出现问题。然后在重定向到该URL之前,将权限添加到剩余调用中的作用域中
仅供参考:自动将用户重定向到登录对话框被视为不良做法和不良用户体验;虽然出于测试目的可以,但在真正面向用户的应用程序中,您应该仅在用户请求时触发登录