首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Google与Firebase简单登录(内部函数传递功能)

问如何使用Google与Firebase简单登录(内部函数传递功能)
EN

Stack Overflow用户
提问于 2013-08-07 21:25:48
回答 3查看 983关注 0票数 1

有没有人知道如何在Google中使用Firebase简单登录?我试图找出在调用FirebaseSimpleLogin时如何定义函数(error,user){}。error和user()都是对象。

这是Firebase的javascript代码示例

代码语言:javascript
复制
   var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');
    var myDataRef = new Firebase('https://johnstest1.firebaseIO.com/');
    var auth = new FirebaseSimpleLogin(myDataRef, function(error, user) {
      if (error) {
        // an error occurred while attempting login
        console.log(error);
      } else if (user) {
        // user authenticated with Firebase
        console.log('User ID: ' + user.id + ', Provider: ' + user.provider);
      } else {
        // user is logged out
      }
    });

这是添加到html文件中供Dart和Firebase使用的代码。

代码语言:javascript
复制
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script> 
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script>  
    <script type="application/dart" src="firebasetestlogin.dart"></script>
    <script src="packages/browser/dart.js"></script>
    <script src="packages/browser/interop.js"></script>    

在.dart文件中,javascript库已经使用pubspec.yaml导入

代码语言:javascript
复制
   import 'package:js/js.dart' as js;

在main()中,这一行代码工作得很好,我可以将数据写入数据库。注释掉的行是原始的javascript行,下一行是Dart版本,它可以工作。

代码语言:javascript
复制
    js.scoped((){
        // var myDataRef = new Firebase('https://johnstest1.firebaseio.com');
        var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');  
    });

这是来自main的相同代码,并添加了Firebase简单登录行。我一直在试图找出如何为函数(错误、用户)编写代码。

代码语言:javascript
复制
  js.scoped((){
        // var myDataRef = new Firebase('https://johnstest1.firebaseio.com');
        var myDataRef = new js.Proxy(js.context.Firebase, 'https://johnstest1.firebaseIO.com/');  

       //var auth = new FirebaseSimpleLogin(js.context.Firebase(myDataRef, function(error, user){}{}));   
       var auth = new js.Proxy(js.context.FirebaseSimpleLogin(myDataRef, js.context.function(error, user)));

  });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-08 07:07:39

当您想在Js中使用Dart回调函数时,您必须创建一个回调并将其用作参数。

与第一个粘贴的js代码对应的省道代码是:

代码语言:javascript
复制
var myDataRef = new js.Proxy(js.context.Firebase, 
    'https://johnstest1.firebaseIO.com/');
var auth = new js.Proxy(js.context.FirebaseSimpleLogin, myDataRef, 
    new js.Callback.many((error, user) {
      if (error != null) {
        // an error occurred while attempting login
        window.console.log(error);
      } else if (user != null) {
        // user authenticated with Firebase
        window.console.log('User ID: ${user.id}, Provider: ${user.provider}');
      } else {
        // user is logged out
      }
    }));

注意:您可以避免不需要的js.scoped,因为很少版本的js软件包。

票数 3
EN

Stack Overflow用户

发布于 2013-08-20 00:30:25

这是一些使用Dart登录Firebase的示例代码。这将Alexandre的答案合并到一个帖子中,并添加了一些代码。

这个例子将:

  • 获取防火墙引用并检查用户是否联机。
  • 使用电子邮件和密码登录创建新的Firebase用户
  • 登录到Firebase
  • 添加child_added侦听器并将数据库中的任何数据打印到控制台。
  • 将一些数据推送到Firebase和trugger child_added以显示数据。
  • 退出Firebase

将js包http://pub.dartlang.org/packages/js添加到程序中

将这三行添加到HTML文件中。

代码语言:javascript
复制
<script src="packages/browser/interop.js"></script>     
<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>    
<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script>      
  • 将此代码放入.dart文件中。 var YOUR_FIREBASE_PATH = 'https://johnstest1.firebaseIO.com/';var emailAddress = "emailAddress@xyz.com";var emailAddress@xyz.com= " password ";var myDataRef = new js.Proxy(js.context.Firebase,YOUR_FIREBASE_PATH);// Firebase var auth = new js.Proxy(js.context.FirebaseSimpleLogin,myDataRef,new js.Callback.many(错误,用户)){ if (error != null) { window.console.log("Firebase登录返回空“);//在尝试登录window.console.log(错误)时发生错误;} if (user != null) { //用户通过Firebase window.console.log身份验证(‘用户ID:${user.id},Provider:${user.provider}');}user.provider}}{window.console.log(“用户注销”);//用户注销}} ( } );
  • 使用电子邮件和密码创建一个新用户来登录 //使用电子邮件和密码auth.createUser创建新用户(emailAddress,密码,新js.Callback.many(错误,用户){ if (错误!= null & user != null) { if (!window.console.log){window.console.log(‘用户Id:’+ user.id + ',电子邮件:‘+user.email];} } );
  • Firebase登录.//登录到firebase auth.login(‘密码’,js.map({'email':emailAddress,‘密码’:密码}));

添加一个child_added回调,如果一个新的子节点被添加到数据库中,它将被调用

代码语言:javascript
复制
    // Add a listener for for child_added and gets all the data
    myDataRef.on('child_added',
        new js.Callback.many((snapshot, String previousChildName) {
        try {        
            final message = snapshot.val();
            print("${message.name} : ${message.text}");
        }
        catch (e) {} 
    }));
  • 将一些数据推送到Firebase,child_added回调将将数据库中的任何内容打印到控制台。//将一些数据推送到Firebase myDataRef.push(js.map({“名称”:'Mark',"text":‘一起使用Dart测试2’});
  • 从Firebase// Logout auth.logout()登录用户;
票数 3
EN

Stack Overflow用户

发布于 2015-09-16 07:38:24

现在有一个用于Firebase的由dart团队发起的dart包装器:https://pub.dartlang.org/packages/firebase。

随着未来的使用,飞镖版本远比js版本更令人惊叹。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18114110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档