小编Jam*_*ist的帖子

Firebase停止侦听onAuthStateChanged

从版本^ 3.0.0开始,我很难删除身份验证状态更改侦听器.

要根据文档启动监听器:

firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});
Run Code Online (Sandbox Code Playgroud)

但是,我在文档中找不到任何引用删除身份验证状态更改侦听器的内容.Firebase.Auth类有一个特殊的功能叫做removeAuthTokenListener.不幸的是,它没有记录(firebase文档参考).

通过浏览器的Web控制台.

var auth = firebase.auth();
auth.removeAuthTokenListener;
Run Code Online (Sandbox Code Playgroud)

打印一个带有一个参数的函数定义.我试着做以下事情:

this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);
Run Code Online (Sandbox Code Playgroud)

但那没有做任何事情.

javascript firebase firebase-authentication

41
推荐指数
2
解决办法
2万
查看次数

webpack导入firebase无法正常工作

我有一个问题让firebase 3.0.1工作.我觉得这与我的webpack设置有关.我的文件在下面.当使用webpack dev服务器运行我的应用程序时,我收到错误:

未捕获的TypeError:firebase.initializeApp不是函数

有趣的是,如果我debugger;var firebase = require('firebase');它之后放一个或断点似乎是一个空对象.

webpack.config.js

const webpack = require("webpack");

module.exports = {
    entry: './src/index.js',
    output: {
        path: 'public',
        filename: 'bundle.js'
    },
    module: {
        loaders: [{
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel-loader?presets[]=es2015&presets[]=react'
        }]
    },
    plugins: process.env.NODE_ENV === 'production' ? [
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.optimize.UglifyJsPlugin()
    ] : []
};
Run Code Online (Sandbox Code Playgroud)

的package.json

{
  "name": "burn",
  "version": "1.0.0",
  "description": "burn messaging",
  "main": "index.js",
  "scripts": {
    "start": "if-env NODE_ENV=production && npm run start:prod || npm run …
Run Code Online (Sandbox Code Playgroud)

npm firebase webpack

12
推荐指数
1
解决办法
6656
查看次数

firebase auth在刷新时延迟

我的SPA React/Firebase应用程序上的硬刷新在立即执行功能时不会保持身份验证状态.我有一个解决方法,但它是粗略的.

我的反应路由利用该onEnter功能来确定用户是否经过身份验证.例如

<Route path="/secure" component={Dashboard} onEnter={requireAuth}/>
Run Code Online (Sandbox Code Playgroud)

此外,我的requireAuth功能看起来像这样:

function (nextState, replace) {
        console.log('requireAuth', firebase.auth().currentUser);
        if (!firebase.auth().currentUser) {
            console.log('attempting to access a secure route. please login first.');
            replace({
                pathname: '/login',
                state: { nextPathname: nextState.location.pathname }
            });
        }
};
Run Code Online (Sandbox Code Playgroud)

但是,在硬刷新时会有轻微的延迟firebase.auth().currentUser.它首先为null,然后执行a POST到firebase服务器以确定身份验证状态.当它返回时,currentUser对象被填充.但这种延迟会引发问题.

我的hacky解决方案如下:更新:这实际上不起作用......

function (nextState, replace) {
    setTimeout(function () {
        console.log('requireAuth', firebase.auth().currentUser);
        if (!firebase.auth().currentUser) {
            console.log('attempting to access a secure route. please login first.');
            replace({
                pathname: '/login',
                state: { nextPathname: nextState.location.pathname } …
Run Code Online (Sandbox Code Playgroud)

firebase reactjs react-router firebase-authentication

7
推荐指数
1
解决办法
3035
查看次数

颤动:禁用滑动以在iOS中导航回来

我是新手来讨论开发,并且当你有一个导航抽屉时,在iOS中发现它有点令人沮丧,当你滑动打开它时,它会执行一个Navigation.of(context).pop().我想在iOS中禁用这种"轻扫到弹出"行为.我一直在阅读文档,但没有太多运气.

我确实看到了一些被称为WillPopScope诀窍的东西(这里有github问题),但我不能100%确定这是否是"正确"的方法(看起来太复杂了......)应该更容易......就像根应用程序上的设置一样).

ios flutter

5
推荐指数
6
解决办法
5509
查看次数

Cordova无法从CLI构建,但从XCode xcworkspace构建完美

我最近将https://github.com/chemerisuk/cordova-plugin-firebase-messaging添加到我的cordova项目中,该项目具有框架依赖性

    <framework src="Firebase/Core" type="podspec" spec="~> 5.0"/>
    <framework src="Firebase/Messaging" type="podspec" spec="~> 5.2"/>
Run Code Online (Sandbox Code Playgroud)

我最初在Android上测试代码和一切,它就像一个魅力.

但是,在我努力在iOS上测试我的更改时,我在运行cordova run android或任何其他构建命令时很快遇到了一些问题.他们倾向于失败,错误暗指CocoaPods Linking问题.如:

platforms/ios/Pods/FirebaseCore/Firebase/Core/FIRNetwork.m:23:9: 
    fatal error: 'GoogleToolboxForMac/GTMNSData+zlib.h' file not found
#import <GoogleToolboxForMac/GTMNSData+zlib.h>
Run Code Online (Sandbox Code Playgroud)

我找到了各种SO帖子,提到修复搜索路径或修改.m文件以引用相对路径(这是一个可怕的想法和太多的工作).

但这是问题所在,我知道这个项目是正确的.如果我打开我的.xcworkspace并从XCode运行它就可以完美运行!它仅在从命令行运行时出现问题.

Installed platforms:
android 7.1.0
ios 4.5.5

$ cordova -version
8.0.0

Xcode 9.4.1
Build version 9F2000

$ pod --version
1.5.3
Run Code Online (Sandbox Code Playgroud)

我完全不知所措.任何帮助将不胜感激!

我的Podfile以防万一

# DO NOT MODIFY -- auto-generated by Apache Cordova
platform :ios, '8.0'
target 'VeociSTAGE' do
        project 'VeociSTAGE.xcodeproj'
        pod 'Firebase/Core', '~> 5.0'
        pod 'Firebase/Messaging', '~> 5.2'
        pod 'GoogleToolboxForMac', '~> …
Run Code Online (Sandbox Code Playgroud)

xcode ios cocoapods cordova firebase-cloud-messaging

5
推荐指数
1
解决办法
457
查看次数

Spring 集成 DSL 错误处理

正如标题所说,我正在寻找一个关于 DSL 流中的 errorHandling 的好例子。具体来说,我希望处理来自服务激活器的错误。

例子:

IntegrationFlows.from(Amqp.inboundAdapter(simpleMessageListenerContainer()))
    .transform(new JsonToObjectTransformer(AlbumDescriptor.class))
    .handle(AlbumDescriptor.class, (p,h) -> transformXml(p))
    .transform(new ObjectToJsonTransformer())
    .handle(Amqp.outboundAdapter(rabbitTemplate).routingKey("xml-transformed"))
    .get();
Run Code Online (Sandbox Code Playgroud)

如果我的函数transformXml(p)抛出异常,我如何使它转到特定的 errorChannel。

如果没有抛出异常,一切都会按照我想要的方式工作。

目前,如果从此函数抛出异常,我会收到以下异常:

2014-09-17 15:26:28.566  WARN 16339 --- [cTaskExecutor-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.

org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException: Listener threw exception
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:758)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:653)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:576)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:78)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:161)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1177)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:559)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:950)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:934)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$600(SimpleMessageListenerContainer.java:78)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1045)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.messaging.MessageHandlingException: java.lang.reflect.InvocationTargetException
    at org.springframework.integration.dsl.LambdaMessageProcessor.processMessage(LambdaMessageProcessor.java:125)
    at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:71)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:170)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
    at …
Run Code Online (Sandbox Code Playgroud)

spring spring-integration spring-dsl

3
推荐指数
1
解决办法
5244
查看次数

颤动自定义标题下拉列表(材质页面过滤器)

按照应用栏"页面过滤器"的概念,我想把它DropdownButton作为标题AppBar.我试过了,但看起来并不好.

https://material.io/guidelines/layout/structure.html#structure-app-bar

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _value = 'one';

  @override
    void initState() {
      super.initState();
    }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new DropdownButton<String>(
          value: _value,
          items: <DropdownMenuItem<String>>[
            new DropdownMenuItem(
              child: new Text('one'),
              value: 'one',
            ),
            new DropdownMenuItem(
              child: new Text('two'),
              value: 'two'
            ),
          ], 
          onChanged: (String value) …
Run Code Online (Sandbox Code Playgroud)

material-design flutter

3
推荐指数
2
解决办法
3989
查看次数

Dart内置值反序列化对象列表

我有一个返回对象列表的API ...

[{}, {}, {}, ...]
Run Code Online (Sandbox Code Playgroud)

我已经为每个对象都有一个已定义且可以正常工作的build_value模型。但是,现在我需要对列表进行反序列化。

我目前正在尝试这样的事情:

 List<Map<String, dynamic>> json = JSON.decode(DEMO_TASK);
 json.expand<Task>((Map<String, dynamic> map) => _serializers.deserializeWith<Task>(Task.serializer, map));
Run Code Online (Sandbox Code Playgroud)

但是,这会导致问题,因为它说_serializers.deserializeWith返回类型Task不是Iterable<Task>闭包定义的类型。

我要如何反序列化列表。我确定我缺少一些超级基础的东西。

dart flutter

3
推荐指数
2
解决办法
1637
查看次数