我希望能够使用Facebook登录将我的用户登录到Firebase,但是如果他们安装了Facebook应用程序,而无需再次填写他们的信息,只需要获得正确的权限,就像许多本机应用程序一样。有可能吗?
[编辑]
使用官方Facebook插件和NGCordova实施(http://ngcordova.com/docs/#Facebook)我能够使用手机上已有的凭据来记录用户 - 我猜Facebook的应用程序。当然,它没有使用Firebase在我的应用程序上记录用户。我不知道我是否走在正确的道路上......如果我是,我不知道如何搭桥。
[编辑2]
显然,Firebase提供了一个功能来执行此操作:https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-user-authentication-and-management-authwithoauthtokenprovider-credentials-options但是现在我无法使其正常工作。如果我终于找到了解决方案,我会回来分享解决方案。
答案 0 :(得分:2)
好的,我终于搞定了!如果将来有人需要这个,请按以下步骤操作:
然后,点击Facebook登录按钮,使用以下内容:
使用AngularFire:
app.factory("firebaseRoot", [ function() {
return "https://<YOUR FIREBASE>.firebaseio.com/";
}])
app.factory("Auth", ["$firebaseAuth", "firebaseRoot", function($firebaseAuth, firebaseRoot) {
var ref = new Firebase(firebaseRoot);
return $firebaseAuth(ref);
}])
在控制器中:
$scope.fblogin = function() {
var options = {
scope: "email,user_friends"
};
$cordovaFacebook.login(["public_profile", "email", "user_friends"])
.then(function(success) {
console.log(success.authResponse.accessToken);
Auth.$authWithOAuthToken("facebook", success.authResponse.accessToken).then(function(authData) {
console.log("Logged in as:", authData.uid);
}).catch(function(error) {
console.error("Firebase Authentication failed:", error);
});
}, function (error) {
console.log(error);
});
};
或纯JS:
function fblogin() {
var fbLoginSuccess = function (userData) {
console.log(userData.authResponse.accessToken);
var ref = new Firebase("https://<YOUR FIREBASE>.firebaseio.com");
ref.authWithOAuthToken("facebook", userData.authResponse.accessToken, function(error, authData) {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with payload:", authData);
}
});
}
facebookConnectPlugin.login(["public_profile"],
fbLoginSuccess,
function (error) { console.log("" + error) }
);
}
希望它有所帮助!