私は自分のアプリのFacebookログインに取り掛かりましたが、ここに問題があります。 どうすればよいですか?前の1つが失敗した場合にのみ機能を実行する
1は - Facebookを利用して認証(DONE) 2 - フェイスブックからUSARデータを取得する(DONE) 3 - 彼は、電子メールとfbトークンを使用してログインしますない場合 - ユーザーは が存在するかどうかをチェックします。 - そうしないと、システムはデータを登録して自動的にサインインします。
問題は次のとおりです。 私はここにメソッドがあり、認証し、登録しています。 私は何をしなければなりませんか? コール認証、エラーが発生した場合は、認証と登録を呼び出す必要があります。 どうすればいいですか?
NodeJS
で登録api.register= function(req, res) {
if (req.body.password!==null) {
var hash = bcrypt.hashSync(req.body.password, bcrypt.genSaltSync(9));
req.body.password= hash;
console.log('Default Login');
}
if(req.body.tokenFB!==null){
var tokenHash = bcrypt.hashSync(req.body.tokenFB, bcrypt.genSaltSync(9));
req.body.tokenFB = tokenHash;
console.log('Login with facebook');
}
userModel.create(req.body)
.then(function(user){
res.json(user);
console.log('We have a new user! =)');
}, function(error){
res.status(500).json(error);
});
};
私はそれをしようとしていたし、何を私を示すためにcuzをNodeJS
で認証api.authenticate= function(req, res) {
var email = req.body.email;
console.log(req.body);
userModel.findOne({"email":email})
.then(function(user){
if (user == null) {
res.status(404).json();
}
else {
if (req.body.password!==null && bcrypt.compareSync(req.body.password, user.password)) {
//user found
console.log('default user')
var token = jwt.sign({email:user.email}, app.get('secret'), {
expiresIn: 84600
});
res.set('x-access-token', token);
res.json(user);
} else if (req.body.tokenFB!==null && bcrypt.compareSync(req.body.tokenFB, user.tokenFB)){
console.log('facebook user')
var token = jwt.sign({email:user.email}, app.get('secret'), {
expiresIn: 84600
});
res.set('x-access-token', token);
res.json(user);
}
else {
res.status(404).json();
}
}
}, function(error){
res.status(404).json(error);
});
};
AngularJS でFacebookログインIF部分が明確に存在し、機能しません。やろうとしています
$scope.FBLogin = function(){
firebase.auth().signInWithPopup(provider).then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
$http.get('https://graph.facebook.com/v2.5/me? access_token='+token+'&fields=id,name,first_name,last_name,email')
.success(function(jsonService){
$scope.user.firstName= jsonService.first_name;
$scope.user.lastName = jsonService.last_name
$scope.user.email = jsonService.email;
$scope.user.password=null;
$scope.user.tokenFB=token;
$scope.user=true;
console.log($scope.user);
if($scope.authenticate()){
console.log("Logged in with Facebook! :)")
} else {
$scope.checkingUser=false;
$scope.Register();
$scope.Authenticate();
};
});
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
// ...
});
};
だから誰でも私を助けてくれますか?
$ scope.authenticate()のコードを投稿することもできます –
ありがとうございました@BalaAbhinav、私はすでに私の問題を解決しました。 しかし、コードはとにかく私の答えです! :) –