在 node-js 中运行以下行后:
import * as admin from "firebase-admin";
import * as serviceAccount from "../../firebase_service_account_key.json";
const app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount as any),
databaseURL: "https://my-app-path.firebaseio.com"
});
admin.messaging().send({
token: "known-good-token",
notification: {
title: "Test Push Note",
body: "Here is some text"
}
});
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error: Auth error from APNS or Web Push Service
Raw server response:
"{
"error":{
"code":401,
"message":"Auth error from APNS or Web Push Service",
"status":"UNAUTHENTICATED",
"details"[
{
"@type":"type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode":"THIRD_PARTY_AUTH_ERROR"
},
{
"@type":"type.googleapis.com/google.firebase.fcm.v1.ApnsError",
"statusCode":403,
"reason":"InvalidProviderToken"
}
]
}
}" …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Android / IOS flutter 应用程序中使用 auth、firestore firebase,并且在测试了几个不同的版本后遇到了许多不同的问题。现在它在构建日志中向我显示了几条消息。
构建日志
注意:D:\Flutter\SDK\flutter.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.3+1\android\src\main\java\io\flutter\plugins\firebase\core\FirebaseCorePlugin .java 使用或覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以获取详细信息。注意:D:\Flutter\SDK\flutter.pub-cache\hosted\pub.dartlang.org\cloud_firestore-0.13.0+1\android\src\main\java\io\flutter\plugins\firebase\cloudfirestore\CloudFirestorePlugin .java 使用未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译以获取详细信息。D8:无法在单个 dex 文件中容纳请求的类(# 方法:81454 > 65536)com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:.dex 文件中的方法引用数不能超过 64K。了解如何解决此问题,请访问 https://developer.android.com/tools/building/multidex.html 在 com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131) 在 com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118) 在 com.android.build.transgradle .DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) 在 com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444) 在 com.android.build.gradle.internal.tasks.Workers$ActionFacade .run(Workers.kt:335) at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47) at org. gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)
Run Code Online (Sandbox Code Playgroud)at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61) at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98) at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56) at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215) at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210) …
dart firebase firebase-authentication flutter google-cloud-firestore
我正在为移动应用程序编写后端服务器.后端在谷歌应用引擎上运行,用Java编写.
我希望用户能够使用Facebook等联合身份登录.
我看到谷歌通过firebase身份验证为移动应用程序支持这种身份验证.将firebase身份验证与我当前的应用引擎端点集成的最佳方法是什么?
我已经使用了云平台的数据存储区,并且不希望使用firebase数据库,只使用身份验证方法.
谢谢.
我正在使用FirebaseUI-Authentication.使用电子邮件或Google帐户登录是成功的,但使用Facebook登录无效.onActivityResult()在AuthUI活动开始并尝试使用Facebook登录后未调用.登录后尝试将应用程序停留在加载窗口.logcat输出FirebaseApp日志:
通知背景状态更改侦听器.
在Facebook应用程序仪表板上,我设置了有效的OAuth重定向URI,正如firebase指南所述,我将应用程序设置为公共(如果它是公共的还是处于开发状态,这是否重要?).在Firebase控制台中,我启用了Facebook登录并设置了App ID和App secret.
这是一个视频录制,显示点击登录活动后登录Facebook后发生的情况.
为什么不onActivityResult()叫?
主要活动:
/**
* Use this method to start the FirebaseUI sign in activity.
*/
public void switchToSignIn() {
this.activity.startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(
AuthUI.EMAIL_PROVIDER,
AuthUI.GOOGLE_PROVIDER,
AuthUI.FACEBOOK_PROVIDER)
.build(), RC_SIGN_IN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RC_SIGN_IN) {
if (resultCode == this.activity.RESULT_OK) {
// user is signed in!
Log.d(Constants.TAG_LoginHandler, …Run Code Online (Sandbox Code Playgroud) android facebook-authentication firebase firebase-authentication firebaseui
当我signInWithEmailAndPassword()用来登录onAuthStateChanged()总是火两次.
我非常确定只在firebaseAuth, and I have the code inonStop()中添加一次监听,以便在此之后删除监听器.
有谁知道如何解决这个问题?
我的代码:
public class SignInActivity extends BaseActivity implements
View.OnClickListener,
GoogleApiClient.OnConnectionFailedListener{
private static final String PREF_KEY_USER_EMAIL = "User_Email";
private static final int RC_SIGN_IN = 1111;
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener authStateListener;
private DatabaseReference firebaseDbReference;
private TextView fieldEmail;
private TextView fieldPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
getSupportActionBar().hide();
firebaseAuth = FirebaseAuth.getInstance();
firebaseDbReference = FirebaseDatabase.getInstance().getReference();
fieldEmail = (TextView) findViewById(R.id.field_email);
fieldPassword = (TextView) findViewById(R.id.field_password);
String userSavedEmail = getPreferences(MODE_PRIVATE).getString(PREF_KEY_USER_EMAIL, …Run Code Online (Sandbox Code Playgroud) 我正在使用firebase来验证我的Android应用程序中的用户.我向用户提供了在登录窗口中重置密码的选项.当用户点击按钮时,它会成功发送电子邮件.但是,当用户点击链接时,它始终显示
" 请尝试重新设置密码.您重置密码的请求已过期或链接已被使用"
谁知道我哪里错了?我尝试使用不同设备的不同电子邮件ID登录.还是行不通.我使用的是" com.google.firebase:firebase-auth:9.2.0 ".
2016年8月31日更新
我与firebase支持联系,看起来有一些API密钥错误.如果您更改了浏览器API密钥,则无法更新.现在这个错误已修复,重置密码功能正常.
我正在尝试验证idToken后端.用户已成功登录到firebase客户端,但当我尝试验证后端的idToken时,我得到的这个不是非常有用的错误消息
Firebase身份验证ID令牌具有错误的"aud"声明
错误消息似乎变得更有用,并归结为在auth密钥中没有项目名称:
错误:Firebase ID令牌具有错误的"aud"(受众群体)声明.预计"stripmall-0000"但得到"617699194096-0aafcvsml0gke61d6077kkark051f3e1.apps.googleusercontent.com".确保ID令牌来自与用于对此SDK进行身份验证的服务帐户相同的Firebase项目.有关如何检索ID令牌的详细信息,请参阅 https://firebase.google.com/docs/auth/server/verify-id-tokens.
任何有丝毫想法的人都会出错?我从客户端正确收到tokenId,这应该不是问题.真诚的应用,如果之前已经被问过,或者以任何其他方式是微不足道的.
firebase.initializeApp({
serviceAccount: {
"type": "service_account",
"project_id": <project id here>,
"private_key_id": <key id goes here>,
"private_key": <key goes here>
"client_email": <email goes here>,
"client_id": <my client id>,
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": <url goes here>
},
databaseURL: <my db url here>
});
router.post("/verify", function (req, res) {
firebase.auth().verifyIdToken(req.body.idToken).then(function (decodedToken) {
var uid = decodedToken.sub;
res.send(uid);
}).catch(function (error, param2) {
console.log(error); // 'Firebase Auth ID token has incorrect "aud" claim'
});
});
Run Code Online (Sandbox Code Playgroud) 我将应用程序的数据存储在Firebase上,这是我在Firebase上的第一个项目,比我想象的要困难得多.我已经阅读了官方文档,它说我们可以使用他们的电子邮件和密码登录用户或使用其他登录选项,如谷歌或Facebook等.但我不希望用户登录我的应用程序但只读取和写入数据如果他们使用我的应用程序的 firebase .现在我正在为我的firebase使用公共规则,但是那些引用我的firebase URL的人都可以读写数据库.我该如何克服这个问题?
提前致谢.
android firebase firebase-authentication firebase-realtime-database
我们在 Firebase Auth 中使用自定义声明来管理 Firebase 中的访问权限并允许自定义 UI 体验。
我们现在正在处理用户管理部分,我们找不到通过自定义声明检索用户的方法。
例如,用户属于一个组织并具有不同的访问级别 - 管理员或用户。我们需要允许组织的管理员查看他们组织的所有用户。
我们希望避免使用单独的数据库来管理组织用户,以免数据加倍。
是否可以?我们可以在按特定自定义声明过滤所有 Auth 用户的同时检索它们吗?
谢谢!
当我尝试进行电话身份验证时,出现以下错误。
W/BiChannelGoogleApi(12340): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@489
Run Code Online (Sandbox Code Playgroud)
我在 Stackverflow 和其他地方检查了同样的错误,但没有在任何地方得到正确的解决方案。
pubspec.yml 中的更改
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
firebase_core: ^0.3.0+2 //new
firebase_auth: ^0.8.1+1 //new
Run Code Online (Sandbox Code Playgroud)
注意——添加了 //New 以突出我在上面文件中添加的行。
在app/build.gradle末尾添加以下行
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
android/build.gradle
buildscript {
ext.kotlin_version = '1.2.71'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
}
}
allprojects {
repositories { …Run Code Online (Sandbox Code Playgroud)