从 Facebook GraphObject 检索电子邮件

Posted

技术标签:

【中文标题】从 Facebook GraphObject 检索电子邮件【英文标题】:Retrieving email from Facebook GraphObject 【发布时间】:2014-11-10 19:33:01 【问题描述】:

我无法从 Graph 对象中检索电子邮件。我在我的应用程序上看到我有权使用它。这是我当前的代码:

    FacebookSession::setDefaultApplication('xxx','xx');
    $helper = new FacebookRedirectLoginHelper('xxx');
    $session = null;
    try 
        $session = $helper->getSessionFromRedirect();
        Core::session('FacebookAuthSession')->sessionObject = $session;
     catch(FacebookRequestException $ex) 

     catch(\Exception $ex) 

    
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    $graphObject = $response->getGraphObject(); 

【问题讨论】:

你在哪里看到你有它的权限? @luschn 在开发者应用页面上。 【参考方案1】:

您可以使用以下代码来执行:

use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;

if($session) 

  try 

    $user_profile = (new FacebookRequest(
      $session, 'GET', '/me'
    ))->execute()->getGraphObject(GraphUser::className());

    echo "Email: " . $user_profile->getEmail();

   catch(FacebookRequestException $e) 

    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();

     


要测试结果,也可以使用资源管理器:https://developers.facebook.com/tools/explorer

【讨论】:

这不起作用。我的图形对象中没有电子邮件。 你检查developers.facebook.com/tools/explorer了吗?用户的所有信息都将存储在那里的对象中。【参考方案2】:

权限只是在您的应用设置中列为“已批准且未经审核”,但您仍需要在登录过程中使用“范围”参数授权用户:https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

【讨论】:

以上是关于从 Facebook GraphObject 检索电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

喜欢使用 facebook Sdk 3 的帖子

Android Facebook 事件请求

如何从 Facebook 检索照片

浏览器从 facebook 应用程序检索 facebook 凭据

使用 facebook sdk 在墙上发布照片

从 PFFacebookUtils 中检索 Facebook 的用户 ID