卫星Facebook登录没有返回正确的范围

时间:2015-07-19 14:39:29

标签: angularjs facebook facebook-graph-api satellizer

我使用Satellizer进行Facebook登录,除了Facebook没有返回所有用户信息外,它的效果很好。当我加入我的范围电子邮件和public_profile时,我只收到姓名和身份证但没有收到电子邮件。

这是我在客户端的FB配置,正如您所看到的,我要求发送电子邮件和public_profile:

facebook: {
                clientId: 'xxxxxxx',
                url: '/api/public/authentication/facebook',
                authorizationEndpoint: 'https://www.facebook.com/v2.3/dialog/oauth',
                redirectUri: window.location.protocol + '//' + window.location.host + '/',  //  window.location.origin || window.location.protocol + '//' + window.location.host + '/'
                scope: 'email,public_profile',
                scopeDelimiter: ',',
                requiredUrlParams: ['display', 'scope'],
                display: 'popup',
                type: '2.0',
                popupOptions: { width: 481, height: 269 }
            },

在服务器上,这个:

request.get( { url: graphApiUrl, qs: accessToken, json: true }, function( err, response, profile ) { ....

仅为配置文件提供id和名称,如下所示:

profile = Object {name: Denis, id: xxx}

不知道我做错了什么以及为什么我没有收到电子邮件,这个头像...

感谢。

2 个答案:

答案 0 :(得分:3)

从Facebook API v2.4开始,我们需要明确指定要获取的字段(例如:电子邮件)。

Introducing Graph API v2.4

因此,您需要将字段作为URL参数,如

" https://graph.facebook.com/me?fields=id,email,gender,link,locale,name,timezone,updated_time,verified"

答案 1 :(得分:0)

要从Facebook收到电子邮件,您必须确保帐户的电子邮件设置为公开,否则它不会返回。