Facebook がユーザー プロファイルへのアクセスを許可した後、feathers-authentication-oauth2 プラグインがユーザーを DB に作成せず、認証に必要な JWT トークンも作成しないため、OAuth2 Facebook 戦略を使用して FeathersJS サーバーに認証できません。クライアントアプリで feathersclient.authenticate() を呼び出すとき。
その方法を説明している見つけたすべてのドキュメントに従おうとしましたが、良い例として、これを選択できます ( https://blog.feathersjs.com/how-to-setup-oauth-flow- with-featherjs-522bdecb10a8 ) は非常によく説明されています。
出発点として、ドキュメント ( https://docs.feathersjs.com/guides/chat/readme.html )で説明されている Feathers チャット アプリケーションを適切に動作させた後、説明どおりに OAuth2 部分を追加しました。中文書で。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 ファイルに、OAuth2 Facebook プロセスを開始できるように、window.location を「/auth/facebook」に変更する新しい「Facebook ログイン」ボタンを追加しました。
「Facebook ログイン」を押した後、feathersclient.authenticate() 呼び出しが失敗しないように、ユーザーが NeDB DB に作成され、有効な JWT が保存されることを期待します。しかし、その代わりにFacebookのログインページがきちんと呼び出され、その後ブラウザがメインページ('/')に戻されるのですが、その後、メインページがリロードされてfeathersclient.authenticate()が呼び出されると、サーバーは、有効な JWT トークンがないと文句を言うので、認証は失敗します。また、NeDB DB で作成されたユーザーが表示されないため、feathers-authentication-oauth2 プラグインによって実行されるはずのユーザーと JWT の作成が行われません...