如何使用 Facebook 令牌进行身份验证?
How to authenticate with a Facebook token?
我 POST 正在 http://localhost:3030/authentication 并尝试检索 JWT 并使用 Facebook oAuth 创建用户模型。我的客户端是 React 并且独立于 API.
我的body:
{
"strategy": "facebook",
"accessToken": "EAALOM2rXQ50BAL5vERqa6YTJzyKZAeG4Yd9ZBPuqHfRmFzOpsQiTHEc1uS1sBaot7V9F7JlufpAWqqJoHIG8RCghLdBIKssKRyQqMLxiHvCPTjVDXqaR1rM4FhEXk55nFU0ZBZBP2KNVOoDNAGUBtJAOKaUdbeszLE0gXxgoF0DWgZBsRfVsZBFRBenQLMZBwZCDPIF606aHrA0CdDrcTRqSbcJWZCSlYIMwZD",
"facebookId": "10155772119707013",
"email": "joshn@hotmail.com.au"
}
但是我收到一个 HTML 页面响应说 'You are not logged in: You are not logged in. Please log in and try again.'
同样的问题 @ https://github.com/feathersjs/authentication-oauth2/issues/22 如果有人找到了解决方案。
这可以通过 https://github.com/drudge/passport-facebook-token
我的解决方案(在 authentication.js 内)是扩展自定义 Passport 策略:
app.passport.use('facebook-token', new FacebookTokenStrategy({
clientID: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET
}, function (accessToken, refreshToken, profile, done) {
app.service('users').find({
query: {
facebookId: profile.id
}
}).then((userData) => {
if (userData.data.length > 0) {
return done(null, userData.data[0]);
} else {
app.service('users').create({}).then((data) => {
return done(null, data);
});
}
});
}
));
我 POST 正在 http://localhost:3030/authentication 并尝试检索 JWT 并使用 Facebook oAuth 创建用户模型。我的客户端是 React 并且独立于 API.
我的body:
{
"strategy": "facebook",
"accessToken": "EAALOM2rXQ50BAL5vERqa6YTJzyKZAeG4Yd9ZBPuqHfRmFzOpsQiTHEc1uS1sBaot7V9F7JlufpAWqqJoHIG8RCghLdBIKssKRyQqMLxiHvCPTjVDXqaR1rM4FhEXk55nFU0ZBZBP2KNVOoDNAGUBtJAOKaUdbeszLE0gXxgoF0DWgZBsRfVsZBFRBenQLMZBwZCDPIF606aHrA0CdDrcTRqSbcJWZCSlYIMwZD",
"facebookId": "10155772119707013",
"email": "joshn@hotmail.com.au"
}
但是我收到一个 HTML 页面响应说 'You are not logged in: You are not logged in. Please log in and try again.'
同样的问题 @ https://github.com/feathersjs/authentication-oauth2/issues/22 如果有人找到了解决方案。
这可以通过 https://github.com/drudge/passport-facebook-token
我的解决方案(在 authentication.js 内)是扩展自定义 Passport 策略:
app.passport.use('facebook-token', new FacebookTokenStrategy({
clientID: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET
}, function (accessToken, refreshToken, profile, done) {
app.service('users').find({
query: {
facebookId: profile.id
}
}).then((userData) => {
if (userData.data.length > 0) {
return done(null, userData.data[0]);
} else {
app.service('users').create({}).then((data) => {
return done(null, data);
});
}
});
}
));