@feathersjs/authentication-oauth2 不创建 JWT 和用户
@feathersjs/authentication-oauth2 not creating JWT and user
我无法使用 OAuth2 Facebook 策略向 FeathersJS 服务器进行身份验证,因为在 Facebook 授予对用户个人资料的访问权限后,feathers-authentication-oauth2 插件不会将用户创建到数据库中,也不会创建所需的在客户端应用程序中调用 feathersclient.authenticate() 时要验证的 JWT 令牌。
我已经尝试遵循我发现的所有解释如何操作的文档,但作为一个很好的例子,我可以 select 这个 (https://blog.feathersjs.com/how-to-setup-oauth-flow-with-featherjs-522bdecb10a8) 解释得很好.
作为起点,我使用了文档 (https://docs.feathersjs.com/guides/chat/readme.html) 中解释的 Feathers 聊天应用程序,在它正常工作后,我添加了 OAuth2 部分,如 Medium 文档中所述。在 default.json 文件中,我添加了 "facebook" 身份验证策略:
"facebook": {
"clientID": "MY_CLIENT_ID",
"clientSecret": "MY_CLIENT_SECRET"
}
在 authentication.js 文件中我添加了 Facebook OAuth2 身份验证的配置:
const authentication = require('@feathersjs/authentication');
const jwt = require('@feathersjs/authentication-jwt');
const oauth2 = require('@feathersjs/authentication-oauth2');
const FacebookStrategy = require('passport-facebook').Strategy;
module.exports = function (app) {
const config = app.get('authentication');
// Set up authentication with the secret
app.configure(authentication(config));
app.configure(jwt());
app.configure(oauth2({
name: 'facebook',
Strategy: FacebookStrategy,
callbackURL: '/',
scope: ['public_profile', 'email'],
}));
...
最后,在 src/app.js 文件中,我添加了一个新的 "Facebook login" 按钮,它只是将 window.location 更改为“/auth/facebook”,以便 OAuth2 Facebook流程可以开始了。
按下 "Facebook login" 后,我希望在 NeDB 数据库中创建用户并存储有效的 JWT,以便 feathersclient.authenticate() 调用不会失败。
但取而代之的是,Facebook 登录页面被正确调用,之后浏览器返回到主页('/'),但之后,当主页重新加载并且 feathersclient.authenticate() 是被调用时,服务器抱怨没有任何有效的 JWT 令牌,因此身份验证失败。此外,我看不到在 NeDB 数据库中创建的用户,因此应该由 feathers-authentication-oauth2 插件完成的假定用户和 JWT 创建不是...
我终于成功了...我错误地配置了 Facebook 身份验证策略,我已将其更改为:
app.configure(oauth2({
name: 'facebook',
successRedirect: '/',
failureRedirect: '/',
Strategy: FacebookStrategy
}));
现在可以使用了。
我无法使用 OAuth2 Facebook 策略向 FeathersJS 服务器进行身份验证,因为在 Facebook 授予对用户个人资料的访问权限后,feathers-authentication-oauth2 插件不会将用户创建到数据库中,也不会创建所需的在客户端应用程序中调用 feathersclient.authenticate() 时要验证的 JWT 令牌。
我已经尝试遵循我发现的所有解释如何操作的文档,但作为一个很好的例子,我可以 select 这个 (https://blog.feathersjs.com/how-to-setup-oauth-flow-with-featherjs-522bdecb10a8) 解释得很好.
作为起点,我使用了文档 (https://docs.feathersjs.com/guides/chat/readme.html) 中解释的 Feathers 聊天应用程序,在它正常工作后,我添加了 OAuth2 部分,如 Medium 文档中所述。在 default.json 文件中,我添加了 "facebook" 身份验证策略:
"facebook": {
"clientID": "MY_CLIENT_ID",
"clientSecret": "MY_CLIENT_SECRET"
}
在 authentication.js 文件中我添加了 Facebook OAuth2 身份验证的配置:
const authentication = require('@feathersjs/authentication');
const jwt = require('@feathersjs/authentication-jwt');
const oauth2 = require('@feathersjs/authentication-oauth2');
const FacebookStrategy = require('passport-facebook').Strategy;
module.exports = function (app) {
const config = app.get('authentication');
// Set up authentication with the secret
app.configure(authentication(config));
app.configure(jwt());
app.configure(oauth2({
name: 'facebook',
Strategy: FacebookStrategy,
callbackURL: '/',
scope: ['public_profile', 'email'],
}));
...
最后,在 src/app.js 文件中,我添加了一个新的 "Facebook login" 按钮,它只是将 window.location 更改为“/auth/facebook”,以便 OAuth2 Facebook流程可以开始了。
按下 "Facebook login" 后,我希望在 NeDB 数据库中创建用户并存储有效的 JWT,以便 feathersclient.authenticate() 调用不会失败。 但取而代之的是,Facebook 登录页面被正确调用,之后浏览器返回到主页('/'),但之后,当主页重新加载并且 feathersclient.authenticate() 是被调用时,服务器抱怨没有任何有效的 JWT 令牌,因此身份验证失败。此外,我看不到在 NeDB 数据库中创建的用户,因此应该由 feathers-authentication-oauth2 插件完成的假定用户和 JWT 创建不是...
我终于成功了...我错误地配置了 Facebook 身份验证策略,我已将其更改为:
app.configure(oauth2({
name: 'facebook',
successRedirect: '/',
failureRedirect: '/',
Strategy: FacebookStrategy
}));
现在可以使用了。