我正在建立一个网站,我想在上面登录 FB。登录部分几乎没问题,除了我无法获取电子邮件地址。我正在使用 PHP API。我已经在 FB 上设置了询问“电子邮件”的权限,它说可能需要几分钟,但已经一天了,当我尝试在我的网站上使用我的 FB 帐户登录时,它仍然不会询问电子邮件权限。
任何人都可以告诉我出了什么问题?
谢谢!
我正在建立一个网站,我想在上面登录 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 应用中心访问您的应用的用户。您需要更新您的登录代码以请求“电子邮件”权限。