标签: firebase-authentication

Firebase:如何检查用户是否已登录?

Android Firebase的新蜜蜂; 我正在尝试Firebase身份验证,我正在尝试检查用户是否已登录以执行此操作我正在使用此简单代码:

null != mAuth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)

而这个返回true虽然我没有登录,但我已经启用annonymous登录,我认为这可能是问题,但是当我检查 mAuth.getCurrentUser().isAnonymous()我得到false.

检查mAuth.getCurrentUser()IDE显示: 在此输入图像描述

这里有任何指示.

android firebase firebase-authentication

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

Firebase 浏览器密钥 API 限制

创建新项目时,Firebase 在GCP API 凭证中自动生成浏览器 API 密钥。这与 Firebase Web 客户端 SDK 中设置的 API 密钥相同,并且是公开可用的。

默认情况下,密钥没有限制,因此很容易为该项目启用的每个 API 窃取配额。令人惊讶的是,我没有在 Firebase 文档中找到有关保护此密钥的信息。

所以我采取了两个额外的步骤来保护密钥:

  1. 添加了 HTTP 引用限制以仅允许来自我的域的请求。
  2. Identity Toolkit API添加到允许的 API 列表中。通过实验,我发现 Firebase Auth 和 Firestore 足以工作。
  3. 添加了令牌服务 API。这是刷新令牌工作并保持身份验证所必需的。

我的问题主要与第 2-3 点有关。Firebase 的各种组件需要启用哪些 API 才能在网络上运行?

firebase firebase-authentication google-cloud-firestore

16
推荐指数
1
解决办法
1176
查看次数

firebase createUser没有登录

我的管理员用户可以创建其他用户,但每次创建用户时,我的管理员用户都已注销,新用户已自动登录,有没有办法在不登录的情况下创建用户?

firebase firebase-authentication

15
推荐指数
0
解决办法
1万
查看次数

更改Firebase包名称

我有一个与Firebase集成的Google Sign-In应用.我最近更改了应用包名称以用于发布目的.现在正在运行抛出此错误:

Error:Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name '<Package Name>'
Run Code Online (Sandbox Code Playgroud)

因此我猜测Firebase无法识别具有新软件包名称的应用程序.如何更改Firebase包名称.我已经通过Firebase控制台但找不到任何更改的包设置.或者有没有什么好方法来实现这一点,而不是再次使用包名和代码创建新项目?任何帮助,将不胜感激.

android firebase firebase-authentication

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

android google登录后如何初始化firebase?

我想尝试将我的原生android firebase开发保持在最低限度,以便当我准备移植到IOS/web时,我不会在那里做很多事情.

现在firebase的Javascript不允许从Android登录谷歌,这可以从插件中处理.但我坚持的是如何基于Java Android Google登录初始化firebase.

所以这就是我想要实现的目标:

Cordova将Java-Android-Native登录称为google --->基于此,我将如何初始化firebase?

这个插件可以让我本地登录google:https://www.npmjs.com/package/cordova-plugin-googleplus

但我想我需要身份验证令牌?令牌ID?

firebase.auth().signInWithCredential(credential).catch(function(error) {
  } else {
    console.error(error);
  }
 });
Run Code Online (Sandbox Code Playgroud)

这可以给我上面要求的东西吗?https://developers.google.com/identity/sign-in/android/sign-in

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Run Code Online (Sandbox Code Playgroud)

更新1:只想分享更多信息.当用户在Android上通过谷歌登录时,我有以下对象

GoogleSignInAccount
Run Code Online (Sandbox Code Playgroud)

https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount

它有public String getIdToken ()&public String getServerAuthCode ()为什么不能用这些来使用JS来验证firebase?

更新2:Faraz提供的答案似乎正在起作用.以下是功能https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential的参考资料signInWithCredential

谢谢您的帮助.

java android cordova firebase firebase-authentication

15
推荐指数
1
解决办法
816
查看次数

在Android应用上获取id令牌并在后端服务器上验证它(如何使用id令牌?)

我正在开发一个Android应用程序,它使用我自己的REST API服务器上的数据.我想使用Firebase身份验证,因为它允许用户以非常简单的方式使用Google,Facebook,Twitter ...进行登录.

但我不确定如何使用ID令牌:

  • 因为ID令牌有截止日期,我应该在客户端应用程序的每个请求上调用getToken方法,所以我确定每次都发送一个有效的令牌吗?
  • 每次收到客户端应用程序的请求时,我应该在服务器中调用verifyIdToken吗?

我不知道这些方法(getToken和verifyIdToken)是做什么的,并且因为它们是异步的,我担心它们会在每次调用时向Firebase服务器发出请求.所以我认为在我的每个请求中向Firebase服务器发出2个请求是不可取的...

android firebase firebase-authentication

15
推荐指数
2
解决办法
6768
查看次数

使用.NET Core的Firebase身份验证(JWT)

我正在开发一个处理Firebase身份验证的简单API - 稍后将用于Android客户端.

所以在Firebase控制台中我启用了Facebook和Google登录方法,并创建了一个示例html页面,我可以使用它来测试登录方法 - 下一个函数由按钮调用:

function loginFacebook() {
        var provider = new firebase.auth.FacebookAuthProvider();
        var token = "";
        firebase.auth().signInWithPopup(provider).then(function (result) {
            var token = result.credential.accessToken;
            var user = result.user;
            alert("login OK");
            user.getToken().then(function (t) {
                token = t;
                loginAPI();
            });
        }).catch(function (error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            alert(errorCode + " - " + errorMessage);
        });
    }
Run Code Online (Sandbox Code Playgroud)

接下来我使用令牌并通过jQuery中的简单ajax调用将其发送到我的API:

function loginAPI()
{
    $.ajax({
        url: "http://localhost:58041/v1/Users/",
        dataType: 'json',
        type: 'GET',
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
            xhr.setRequestHeader("Authorization", "Bearer …
Run Code Online (Sandbox Code Playgroud)

c# authentication asp.net-web-api firebase-authentication asp.net-core

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

Android Firebase Rest API身份验证

我目前正在使用Firebase实时数据库开发应用程序,但是我选择省略使用SDK从数据库中检索数据.原因是我不希望我的代码与FireBase紧密相关,因为一旦应用程序构建,api本身将转移到基于自定义休息的api.

我根据文档使用REST和Firebase实现了api调用,没有问题 - POST,GET,DELETE等.

我遇到的问题是,如果我在数据库上启用任何类型的身份验证,根据我需要发送带有请求的"access_token"的文档,但是我不知道从哪里检索它. firebaseUser.getToken(true)返回看起来像JWT令牌的内容,如果我将其发送为无法识别"access_token".我明白了401 Unauthorized

我还按照说明设置了一个服务帐户,该帐户似乎生成了一个有效的令牌,但它并没有唯一地标识用户.

所以我的问题是,任何人都可以指出我如何获得所需的访问令牌,以识别哪个用户正在访问该API?我的Firebase项目支持的登录选项是Google,Facebook和Twitter.

android oauth-2.0 firebase firebase-authentication firebase-realtime-database

15
推荐指数
1
解决办法
2046
查看次数

如何将Firebase Auth Token从客户端传递到服务器?

我正在使用的网站使用Firebase身份验证,登录的不同用户对他们可以访问的页面拥有不同的权限.

登录的方式是设置类似于这篇文章:

  1. 用户使用两个参数登录 - "id"和"email"
  2. 服务器使用这些来创建自定义"uid",然后使用Firebase Admin SDK创建发送回客户端的自定义令牌.
  3. 客户端使用Javascript Firebase SDK登录 - firebase.auth().signInWithCustomToken()
  4. 现在用户已登录,他们可以点击不同的页面 - 即'/ foo','/ bar'

我遇到的问题是,当他们访问新页面时,我正在尝试将令牌从客户端传递回服务器(几乎与在此Firebase文档中完成的方式相同),验证令牌并检查是否存在有权查看网页.

我正在努力找出最好(也是最安全)的方法.我考虑过以下选项:

  • 用令牌构造一个URL,但我听说这不是一个好习惯,因为令牌暴露,会话劫持变得容易多了.

我一直在尝试在请求标头中传递令牌,但据我所知,当用户点击指向其他页面的链接时(或者如果它在javascript中重定向),您无法添加标头.同样的问题适用于使用POST.

如果用户点击指向其他页面的链接,我该如何安全地将此信息传递到服务器并检查权限?

authentication firebase firebase-authentication

15
推荐指数
1
解决办法
4540
查看次数

Node.js -Firebase服务帐户私钥不会解析

.env在app.js文件中使用变量来访问密钥.一切都很好,直到我下载了一个新的Firebase Service Account Private Key.当我用新值替换旧值时,我无法再访问密钥,因为在terminal运行时node app.js我不断收到错误消息:

/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/auth/credential.js:129抛出新的错误_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL,'无法解析私钥:'+错误); ^

错误:无法解析私钥:错误:无效的PEM格式的消息.在FirebaseAppError.FirebaseError [作为构造函数](/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/utils/error.js:39:28)在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/用户/ Cpu/Desktop /...../ node_modules/firebase-admin/lib/utils/error.js:85:28)新的FirebaseAppError(/Users/Cpu/Desktop/...../node_modules/firebase -admin/lib/utils/error.js:119:28)新证书(/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/auth/credential.js:129:19)在新的CertCredential(/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/auth/credential.js:192:64)在Object.cert(/ Users/Cpu/Desktop/... ..)在对象.(/Users/Cpu/Desktop/...../app.js:14:32)在Module._compile(module.js:571:32)的Object.Module._extensions..js(module.js:580) :10)在Module.load(module.js:488:32)的FirebaseAppError.FirebaseError [作为构造函数] npm ERR!代码ELIFECYCLE npm ERR!错误1

我所做的只是c + p新的Private Key,然后添加它并保存.env文件,推送到heroku,它不再工作.我甚至下载了一个新的Private Key但同样的问题.

新旧私钥

// old Private Key
-----BEGIN PRIVATE KEY-----\nbbbbbbbb\n-----END PRIVATE KEY-----\n

// new Private Key
-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n
Run Code Online (Sandbox Code Playgroud)

.env文件:

FIREBASE_PROJECT_ID=wwwwwwww
FIREBASE_CLIENT_EMAIL=xxxxxxxx
FIREBASE_DATABASE_URL=yyyyyyyy
FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n
Run Code Online (Sandbox Code Playgroud)

app.js文件:

const dotenv = require('dotenv');
dotenv.load();

var admin = require("firebase-admin"); …
Run Code Online (Sandbox Code Playgroud)

parsing json node.js npm firebase-authentication

15
推荐指数
2
解决办法
3847
查看次数