Express.jsでアプリを作成しています。OAuth認証で取得したユーザー情報からプロフィール画像をmongoDBに保存したいです。
あるチュートリアルを参考にして以下のように実装してみたのですが、buffer
にデータが入っていないようです。認証を実行してもリダイレクトされず、console.log
の結果も出力されません。
JavaScript
1//Google OAuth認証設定 2passport.use(new GoogleStrategy({ 3 clientID: process.env.GOOGLE_CLIENT_ID, 4 clientSecret: process.env.GOOGLE_CLIENT_SECRET, 5 callbackURL: 'http://localhost:3000/oauth2/google/callback', 6}, 7(async (accessToken, refreshToken, profile, cb) => { 8 const buffer = await sharp(profile._json.picture.buffer).resize({ width: 250, height: 250 }).png().toBuffer(); 9 console.log(buffer); 10 11 User.findOrCreate({ 12 username: profile.id, 13 provider: profile.provider, 14 displayName: profile.displayName, 15 avatar: buffer 16 }, (err, user) => cb(err, user)); 17})));
JavaScript
1//Userスキーマ 2const userSchema = new mongoose.Schema({ 3 username: { 4 type: String, 5 required: true, 6 }, 7 provider: { 8 type: String, 9 required: true, 10 }, 11 displayName: { 12 type: String, 13 default: 'Unknown', 14 }, 15 avatar: { 16 type: Buffer, 17 }, 18});
profile._json.picture
にはhttps://lh3.googleusercontent.com
から始まるURLが入っており、アクセスするとブラウザ上で画像が表示されます。
Buffer形式で保存するのがベストなのかどうかということも含めアドバイスを頂けると幸いです。
理解が不十分な点があるかと思いますが、何卒よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。