Facebook OAuth - 获取电子邮件地址


Facebook OAuth - get email address

我正在建立一个网站,我想让FB登录。登录部分几乎都很好,除了我无法获得电子邮件地址。我正在使用 PHP API。我已经在FB上设置了请求"电子邮件"的权限,它说可能需要几分钟,但已经一天了,当我尝试在我的网站上使用我的FB帐户登录时,它仍然不会要求电子邮件权限。

任何人都可以告诉我出了什么问题?

谢谢!

首先。 如果您使用的是 PHP SDK。 仅在Facebook网站上的应用程序设置中输入您的应用程序需要电子邮件权限的事实并不能做到这一点。 您的 php 代码必须考虑到您请求电子邮件权限的事实。 没有看到您的代码,我不确定您如何执行fb登录。 但是,如果您使用 facebook::getLoginUrl() 方法执行此操作,请确保您将范围参数设置为包含电子邮件权限,即:

$params = array(
  'scope' => 'read_stream, friends_likes, email',
  'redirect_uri' => 'https://www.myapp.com/post_login_page'
);
$loginUrl = $facebook->getLoginUrl($params);

如果您已经在这样做了...如果您进入应用程序中心并从您的应用程序中取消身份验证(即通过单击应用程序旁边的小 X 右上角)怎么样。然后返回到你的应用并刷新几次,以便它识别访问令牌已被吊销...并再次登录.. 在Facebook提示上,它是否提到该应用程序正在请求电子邮件权限?

如果你发现有效.. 然后,这意味着您在此处的问题是您的应用程序使用了您开始请求电子邮件权限之前的旧访问令牌。 如果您仍处于开发模式,则可以让您的开发人员/测试人员执行相同的操作。 如果没有,您可能需要以编程方式测试用户的活动令牌是否包含电子邮件权限。如果没有,请强制撤销令牌并将用户引导回登录。

另一方面,如果权限提示未提及您的应用程序正在请求电子邮件权限,则意味着您的权限范围字符串或登录请求有问题,在这种情况下,您需要发布代码以进行进一步评估

您在 Facebook

中设置的权限仅适用于通过 Facebook App Center 访问您的应用的用户。您需要更新登录代码才能申请"电子邮件"权限。