Firebase和Cordova-使用Facebook';s用于登录的应用程序凭据

Firebase和Cordova-使用Facebook';s用于登录的应用程序凭据,cordova,firebase,facebook-login,Cordova,Firebase,Facebook Login,我希望能够使用Facebook登录将我的用户登录到Firebase,但如果他们安装了Facebook应用程序,无需再次填写他们的信息,只需请求正确的权限,就像许多本机应用程序一样。可能吗 [编辑] 通过使用官方的Facebook插件和NGCordova实现()我可以使用手机上已有的凭据让用户登录——我猜是Facebook的应用程序。当然,它没有使用Firebase将用户登录到我的应用程序。我不知道我是否走对了路。。。如果我是,我就不知道怎么造桥 [编辑2] 显然Firebase提供了一个函数来实

我希望能够使用Facebook登录将我的用户登录到Firebase,但如果他们安装了Facebook应用程序,无需再次填写他们的信息,只需请求正确的权限,就像许多本机应用程序一样。可能吗

[编辑]

通过使用官方的Facebook插件和NGCordova实现()我可以使用手机上已有的凭据让用户登录——我猜是Facebook的应用程序。当然,它没有使用Firebase将用户登录到我的应用程序。我不知道我是否走对了路。。。如果我是,我就不知道怎么造桥

[编辑2]


显然Firebase提供了一个函数来实现这一点:但目前我无法让它工作。如果我最终找到解决方案,我会回来与大家分享。

好的,我终于让它工作了!如果将来有人需要此功能,以下是您的操作方法:

  • 创建科尔多瓦(或爱奥尼亚)常规项目
  • 创建一个Facebook应用程序。你可以在那之后创建一个测试应用程序,以便于测试
  • 为Facebook添加插件:并使用想要的安装(在我的例子中,android有点复杂,请注意密钥散列步骤)。如果您确实使用Ionic或其他基于角度的框架,则可能需要使用NGCordova:
  • 如果你使用Facebook测试应用程序,如果你在Android上工作,请确保用Android密钥哈希填充其字段,并确保使用其应用程序ID,而不是产品ID
  • 在Firebase上,别忘了填写Facebook应用程序的ID和密码
然后,单击Facebook登录按钮,使用如下方式:

  • 有角火:

    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);
    }])
    
    • 或纯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) }
      );
      }
      
      函数fblogin(){
      var FBLoginSAccess=函数(用户数据){
      log(userData.authResponse.accessToken);
      var ref=新的火基(“https://.firebaseio.com");
      ref.authWithOAuthToken(“facebook”,userData.authResponse.accessToken,函数(错误,authData){
      如果(错误){
      log(“登录失败!”,错误);
      }否则{
      log(“使用有效负载成功进行身份验证:”,authData);
      }
      });
      }
      facebookConnectPlugin.login([“public_profile”],
      fbLoginSuccess,
      函数(错误){console.log(“+错误)}
      );
      }
      
    希望有帮助

    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) }
    );
    }