[英]Facebook connect API : Get user email
我正在使用php的网站进行工作,在该网站中我集成了启用Facebook登录按钮的Facebook Connect API。
我获取用户详细信息的代码如下所示:
<?php
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\GraphUser;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
$appID = 'app id';
$appSecret = 'app secret code';
FacebookSession::setDefaultApplication( $appID, $appSecret);
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://localhost/test/facebook_new/fbconfig.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
// get response
$profile = $response->getGraphObject('Facebook\GraphUser');
var_dump($profile);
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
?>
执行完此代码后, var_dump($profile)
仅显示User Facebook ID
及其Full Name
,如下图所示:
我想得到的是电子邮件。 可以通过'Facebook\\GraphUser'
访问该电子邮件,但是我真的不知道我的代码有什么问题。
请帮我解决这个问题
$request = new FacebookRequest($session, 'GET', '/me?fields=name,email');
它称为“声明性字段”,您必须指定自Graph API v2.4起要返回的字段。
另外,请确保用户具有email
许可权。
Facebook用户在其设置中可以将其电子邮件设置为私人或公开。 这可能是它没有为您显示的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.