繁体   English   中英

Facebook Connect API:获取用户电子邮件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM