0

ユーザーがFacebookアカウントを使用してログインし、ID、名前、電子メールを保存するアプリケーションがあります。私はhttps://github.com/jaredhanson/passport-facebookを使用しています

    UserSchema.statics.findOrCreateFaceBookUser = 関数 (プロファイル、完了) {
    var ユーザー = これ;
    User.findOne({
        「メール」: profile.emails[0].value
    }、関数(エラー、ユーザー){
        もし (エラー) {
            エラーをスローします。
        }
        もし (ユーザー) {
            user.facebook = {
                id: profile.id,
                電子メール: profile.emails[0].value,
                名前: profile.displayName
            };
            user.save(関数(エラー) {
                もし (エラー) {
                    次を返します(エラー);
                } そうしないと {
                   // 完了 (null、ユーザー);
                }
            });
            完了 (ヌル、ユーザー);
        } そうしないと {
            User.findOne({
                「facebook.id」: プロフィール.id
            }、関数(エラー、ユーザー){
                もし (エラー) {
                    エラーをスローします。
                }
                //if (err) return done(err);
                もし (ユーザー) {
                    完了 (ヌル、ユーザー);
                } そうしないと {
                    User.create({
                        firstName:profile.name.givenName,
                        姓: profile.name.familyName,
                        電子メール: profile.emails[0].value,
                        性別:プロフィール.性別、
                        image:"http://graph.facebook.com/"+profile.id+"/picture?type=normal",
                        フェイスブック: {
                            id: profile.id,
                            電子メール: profile.emails[0].value,
                            名前: profile.displayName
                        }
                    }、関数(エラー、ユーザー){
                        もし (エラー) {
                            エラーをスローします。
                        }
                        完了 (ヌル、ユーザー);
                    });
                }
            });
        }

    });

問題は、アプリケーションも使用している facebook の友達を取得する必要があることですが、facebook グラフによって返される「id」が、アプリケーションで保持しているものと一致しません。

https://graph.facebook.com/me/friends?fields=id,name&access_token=xpto

Passport-facebook で受信した「profile.id」は、facebook グラフ フィールド「id」とは異なります

4

0 に答える 0