我使用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
的启发答案 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个以上)并授予他们您计划请求的所有权限。
在“应用评论”部分,确保将应用设置为开发模式\
现在,当执行这些权限的截屏视频时,使用已经由该用户授予的权限的测试用户....您可以毫不费力地执行截屏视频。
在您的应用获得批准后,您可以将应用模式切换为实时。