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

我使用passport.js进行Facebook身份validation,最近我开始出现这个错误。 完整的错误信息如下所示:

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_friends,如果我删除user_photos。 任何想法,我在做什么错了? 我的authentication脚本的核心来自于本教程https://scotch.io/tutorials/easy-node-authentication-facebook

“一些Facebook集成需要在公共使用之前获得批准”。

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

您的应用无论是在生产还是在testing中,都需要进行审查。

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

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

除了公开的个人资料和电子邮件,其他权限要求您提交您的应用程序进行审批。 所以你所做的是:

  1. 去应用仪表板。
  2. 转到“angular色”并select“testing用户”。
  3. 创build一个testing用户(允许您创build超过1个),并授予他们计划请求的所有权限。

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

  5. select您希望获得批准的权限。

现在,在执行这些权限的屏幕录像时,请使用testing用户….并获得该用户已经授予的权限,您可以无任何故障地执行屏幕录像。

在您的应用获得批准之后,您可以切换您的应用模式。