profileFields パラメータは、Portable Contacts の規則に準拠しています。これは、'email' の代わりに 'emails' を使用することを意味します。「about_me」フィールドに関しては、passport-facebook がOpenSocialプロトコルを完全にサポートしているようには見えません。これは、これら両方のプロファイル要素に「profileFields」パラメーターを使用したい場合、運が悪いことを意味します。master ブランチから取得した次のコード スニペットは、この制限を示しています。
Strategy.prototype._convertProfileFields = function(profileFields) {
var map = {
'id': 'id',
'username': 'username',
'displayName': 'name',
'name': ['last_name', 'first_name', 'middle_name'],
'gender': 'gender',
'profileUrl': 'link',
'emails': 'email',
'photos': 'picture'
};
...
このマッピングにリストされているフィールドは、現在サポートされている唯一のフィールドです。
幸いなことに、すべてが失われるわけではありません。profileFields パラメータを使用しないことを選択した場合、奇妙なことに、「bio」というプロパティを介して、関心のある「about_me」コンテンツが送信されます。これにアクセスする方法は次のとおりです。
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: FACEBOOK_CALLBACK_URL
},
function(accessToken, refreshToken, profile, done) {
console.log("bio: " + profile._json.bio);
}));
残念ながら、これはあなたが興味を持っていた他のデータを提供しません。あなたの状況では、パスポートとフェイスブックのコールバック中にサポートされている規則フィールドを収集し、フォローアップ コールで拡張プロファイル フィールドを取得することをおそらく検討していると思います。 Facebook APIを直接使用します。それか、passport-facebook のメンテナに突っ込んでフィールド サポートを拡張してもらいます。