FacebookGraphAPIError:(#100)尝试在节点类型(用户)上访问不存在的字段(user_photos)

时间:2015-02-19 21:13:40

标签: node.js facebook facebook-graph-api

我使用passport.js进行Facebook身份验证,最近我开始收到此错误。完整的错误消息如下所示:

FacebookGraphAPIError: (#100) Tried accessing nonexisting field (user_photos) on node type 
(User) at D:\app\node_modules\passport-facebook\lib\strategy.js:167:21 at passBackControl 
(D:\app\node_modules\passport-facebook\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:124:9) 
at IncomingMessage.<anonymous> (D:\app\node_modules\passport-facebook\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:143:7) 
at IncomingMessage.emit (events.js:129:20) at _stream_readable.js:908:16 at 
process._tickCallback (node.js:355:11)

我尝试了不同的方法来设置权限范围。最初我在

中声明了它
passport.use(new FacebookStrategy({
    profileFields     : ['user_photos', 'user_friends'],
}

然后我把它移到了

app.get('/auth/facebook', passport.authenticate('facebook', 
{ scope : ['email, public_profile, user_photos, user_friends'] }));

如果我删除user_photos,它仍会导致相同的错误,以及user_friends。关于我做错什么的任何想法?我的身份验证脚本的核心受本教程https://scotch.io/tutorials/easy-node-authentication-facebook

的启发

2 个答案:

答案 0 :(得分:3)

&#34;有些Facebook集成需要在公开使用前获得批准。&#34;

https://developers.facebook.com/docs/facebook-login/permissions/

您的应用程序无论是在生产中还是在测试中,都需要进行审核。

https://developers.facebook.com/docs/facebook-login/review/how-to-submit

在Facebook审核并批准之前,您的应用只能使用用户的公开个人资料和他/她的电子邮件。

答案 1 :(得分:0)

除公开个人资料和电子邮件外,其他权限要求您提交申请以获得批准。 所以你要做的是:

  1. 转到应用信息中心。
  2. 转到“角色”并选择“测试用户”。
  3. 创建测试用户(允许您创建1个以上)并授予他们您计划请求的所有权限。

  4. 在“应用评论”部分,确保将应用设置为开发模式\

  5. 选择您希望获得批准的权限。
  6. 现在,当执行这些权限的截屏视频时,使用已经由该用户授予的权限的测试用户....您可以毫不费力地执行截屏视频。

    在您的应用获得批准后,您可以将应用模式切换为实时。