{[FacebookTokenError:此授权码已被使用。]

时间:2016-03-08 18:52:27

标签: javascript node.js facebook sails.js passport-facebook

我有一个风帆应用程序。我试图实施Facebook登录。当我点击Login with facebook按钮时,我收到此错误:

=LOOKUP(DATE(2016,5,P6), Table1[[Date]:[Date]], Table1[[Paper Name]:[Paper Name]])

完整错误日志如下所示:

error: A server error occurred in a request:

error: FacebookTokenError: This authorization code has been used.

中间件代码如下所示:

error: A server error occurred in a request:
error: FacebookTokenError: This authorization code has been used.
at Strategy.parseErrorResponse (/home/node_modules/passport-facebook/lib/strategy.js:198:12)
at Strategy.OAuth2Strategy._createOAuthError (/home/node_modules/passport-facebook/node_modules/passport-oauth2/lib/strategy.js:341:16)
at /home/node_modules/passport-facebook/node_modules/passport-oauth2/lib/strategy.js:166:45
at /home/node_modules/passport-facebook/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18
at passBackControl (/home/node_modules/passport-facebook/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:123:9)
at IncomingMessage.<anonymous> (/home/node_modules/passport-facebook/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:143:7)
at IncomingMessage.emit (events.js:117:20)
at _stream_readable.js:944:16
at process._tickDomainCallback (node.js:492:13) { [FacebookTokenError: This authorization code has been used.]
  name: 'FacebookTokenError',
  message: 'This authorization code has been used.',
  type: 'OAuthException',
  code: 100,
  subcode: undefined,
  status: 500 }

任何人都可以建议我为什么会收到此错误以及任何可能的解决方案。

3 个答案:

答案 0 :(得分:1)

使用facebook登录后记录此错误,之后删除数据库中的用户记录。您必须在Facebook帐户中删除您的APP,然后重试。

答案 1 :(得分:0)

另一个可能性是您已经登录,并且您的中间件正在尝试再次登录。在您的代码中,您没有在向“auth / facebook”发送请求之前检查用户是否已经登录。有一种简单的方法可以证明这一点:在私人模式下打开Chrome窗口,因此不使用cookie,并尝试再次登录你的facebook。祝你好运!

答案 2 :(得分:0)

可能不存在配置文件数据的某些属性。尝试:

console.log(profile)

用于验证配置文件的所有属性。就我而言:

{ id: 'nnnnnnnn',
  username: undefined,
  displayName: 'My Name',
  name: 
   { familyName: undefined,
     givenName: undefined,
     middleName: undefined },
  gender: undefined,
  profileUrl: undefined,
  provider: 'facebook',
  _raw: '{"name":"My name","id":"nnnnnnnn"}',
  _json: { name: 'My name', id: 'nnnnnnnn' } }

不存在任何属性&#34;电子邮件&#34;或类似的,这会产生错误而不能完成身份验证的cicle生命周期:

error: FacebookTokenError: This authorization code has been used.

属性电子邮件未获取,因为我将其隐藏在我的帐户Facebook中。

在您的代码中:

...
var data = {
   provider: profile.provider,
   uid: profile.id,
   name: profile.displayName,
   email: profile.email
};
...

该行:

email: profile.email

您已假设属性电子邮件已存在。

尝试:

email: (profile.emails && profile.emails[0]) ? profile.emails[0].value : ''