小编she*_*key的帖子

Firebase verifyIdToken 错误:解码 Firebase ID 令牌失败。

我正在尝试设置一个与 NodeJS REST API 通信的 Android 应用程序,该 API 与 Firebase 通信,但似乎 firebase 令牌对我不起作用。

我现在在本地运行一个本地 nodejs 服务器和一个 Android 模拟来测试它,它是这样的:

安卓方法:

@Override
public void onNewToken(String token) {
    Log.i(TAG, "Refreshed token: " + token);
    postRegistrationToken(token);
}
Run Code Online (Sandbox Code Playgroud)

这会正确生成并发送到 REST API。

日志显示:

Refreshed token: "MY_TOKEN_STRING"
Run Code Online (Sandbox Code Playgroud)

在 NodeJS 中:

app.post('/api/token/get', (req, res) => {
const token = req.body.registrationToken;
LOG.info(`Acquired token: ${token}`);
admin.auth().verifyIdToken(token)
    .then((decodedToken) => {
        LOG.info(`Successfully validated registrationToken ${token}`);
        //stuff
    })
    .catch((err) => {
        LOG.error(err)
    });
});
Run Code Online (Sandbox Code Playgroud)

verifyIdToken 失败,但令牌与 Android 客户端中生成的令牌相同:

Acquired token: "MY_TOKEN_STRING"
Error: Decoding …
Run Code Online (Sandbox Code Playgroud)

android jwt firebase firebase-authentication firebase-cloud-messaging

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

Java 8 Streams:避免重复的条件?

有没有办法实现类似下面我的代码类似的东西,而不必避免重复自己,同时保持低处理?

    List<String> alist = new ArrayList<>();
    alist.add("hello");
    alist.add("hello2");

    if(verbose) {
        alist.stream()
                .peek(System.out::println)
                .forEach(/*dostuff*/);
    }
    else {
        alist.stream().forEach(/*dostuff*/);
    }
Run Code Online (Sandbox Code Playgroud)

如上所示,我被迫通过在if或者其他情况下处理流来重复自己,如果流变得有点长,看起来有点难看.

还有另一种选择,在我看来看起来更干净,但应该是性能更差,因为它比较了列表中每个项目的详细布尔值.

    List<String> alist = new ArrayList<>();
    alist.add("helllo");
    alist.add("hello2");

    alist.stream()
            .peek(this::printVerbose)
            .forEach(/*dostuff*/);

}


private void printVerbose(String v) {
    if(verbose) {
        System.out.println(v);
    }
Run Code Online (Sandbox Code Playgroud)

}

java-8 java-stream

4
推荐指数
1
解决办法
56
查看次数