我正在使用PHP SDk访问FB中的用户信息以进行登录过程。我有一个测试应用程序设置,一切正常,我收到以下回复(包括电子邮件):
bject(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'id' => 'XXXXX',
'email' => 'strXXXXXXX@gmail.com',
'currency' => object(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'currency_offset' => (int) 100,
'usd_exchange' => (float) 1.24596885,
'usd_exchange_inverse' => (float) 0.802588283,
'user_currency' => 'GBP'
)
},
'first_name' => 'XXX',
'last_name' => 'XXX',
'picture' => object(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'is_silhouette' => false,
'url' => 'https://scontent.xx.fbcdn.net/v/t1.0-1/s200x200/XXXXXX'
)
}
)
}
如果我切换到实时应用,则响应没有电子邮件:
object(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'id' => 'XXXXX',
'currency' => object(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'currency_offset' => (int) 100,
'usd_exchange' => (float) 1.24596885,
'usd_exchange_inverse' => (float) 0.802588283,
'user_currency' => 'GBP'
)
},
'first_name' => 'XXXX',
'last_name' => 'XXXX',
'picture' => object(Facebook\GraphNodes\GraphNode) {
[protected] graphObjectMap => array()
[protected] items => array(
'is_silhouette' => false,
'url' => 'https://scontent.xx.fbcdn.net/v/t1.0-1/s200x200/XXXXXXXX'
)
}
)
}
我所有改变的是应用ID和秘密。有什么想法吗?
答案 0 :(得分:0)
为了访问电子邮件,您的应用需要在请求用户权限时明确要求发送电子邮件(我怀疑您在开始时设置了该电子邮件)。
如果您未获得用户自己的许可,您也将无法访问它。
根据Facebook https://developers.facebook.com/docs/facebook-login/permissions#reference-email
的文档电子邮件
通过用户对象上的email属性提供对该人的主电子邮件地址的访问。
请注意,即使您申请电子邮件权限,也不能保证您会收到电子邮件地址。例如,如果有人使用电话号码而不是电子邮件地址注册Facebook,则电子邮件字段可能为空。