现在我们可以直接从客户端调用 HTTPS 函数,我想知道是否可以将它用于敏感的事务请求以及它是否安全。之前我使用带有 POST 方法的表单,但这可以使事情变得更简单。
通话从头到尾都加密了吗?
firebase firebase-authentication google-cloud-functions google-cloud-firestore
-如何捕获身份验证异常错误 - Unity -如何捕获用户/电子邮件是否存在 - Unity -在哪里查找身份验证异常错误代码列表 - Unity
*我找到了很多 Android 的答案,所以我决定最终为 Unity 编写解决方案。
exception try-catch unity-game-engine firebase firebase-authentication
用户登录应用程序后,我已使用电子邮件和密码成功应用了 Firebase 身份验证。
接下来,我为我的数据库设置了安全规则,Cloud Firestore如下所示。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,用户应该插入一些内容,但前提是他是经过身份验证的用户并且他的信息存在于 firebase 控制台的身份验证表中。
..但事实并非如此,当用户未经身份验证时,我已成功将一些数据插入数据库。看来规则被忽略了..!
我究竟如何才能只允许经过身份验证的用户读取和写入?
android firebase firebase-security firebase-authentication google-cloud-firestore
我使用 Firebase 允许用户使用其 Facebook 帐户或 Google 帐户登录。我已允许在同一电子邮件地址下创建多个帐户。
这是使用 Facebook 帐户成功登录后将用户发送到下一个屏幕的方法:
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(MainActivity.this, Profile.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
overridePendingTransition(0, 0);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果用户使用 Google 帐户登录,则可以使用以下方法将其发送到下一个屏幕:
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 firebase 获取数据,以便了解我的用户是否已经拥有帐户。找到了这个fetchSignInMethodsForEmail。
问题是这个:
“i”属性返回未定义,但之后显示值“password”。当我尝试获取时,我只会得到未定义的结果。
这是我正在使用的方法:
readUser = (user) => {
user = firebase.auth().fetchSignInMethodsForEmail(this.state.email);
console.log(user);
console.log(user.i);
}
Run Code Online (Sandbox Code Playgroud)
它返回 undefined for console.log(user.i);,但我需要它返回值“password”或数组长度。
我正在查看以下文档以使用 Node.js Firebase 管理 SDK 创建用户:https ://firebase.google.com/docs/auth/admin/manage-users#create_a_user
但是,我想创建一个无密码(电子邮件链接)登录的用户,而不是密码。这可能吗?
如果我不为用户指定密码,会发生什么情况?
我的网络应用程序当前使用无密码登录,因此可以正常工作。
我有一个 Axios 实例:
import axios from 'axios';
const instance = axios.create({
baseURL: 'https://identitytoolkit.googleapis.com/v1'
});
export default instance;
Run Code Online (Sandbox Code Playgroud)
然后我将其导入到我的signup.vue 文件中:
<script>
import axios from '../../axios-auth';
...
</script>
Run Code Online (Sandbox Code Playgroud)
在该 Vue 文件中,我有一个注册表单,一旦我点击“提交”按钮,它就会运行以下方法:
onSubmit() {
const formData = {
email: this.email,
age: this.age,
password: this.password,
confirmPassword: this.confirmPassword,
country: this.country,
hobbies: this.hobbyInputs.map(hobby => hobby.value),
terms: this.terms
};
console.log(formData);
axios.post('/accounts:signUp?key=my_key_goes_here', {
email: formData.email,
password: formData.password,
returnSecureToken: true
})
.then(res => {
console.info(res);
})
.catch(error => {
console.error(error);
});
}
Run Code Online (Sandbox Code Playgroud)
我收到403 错误 - 禁止400 错误 …
我有以下检查我是否有经过身份验证的 Firebase 用户
if(await FirebaseAuth.instance.currentUser() == null)
Navigator.pushNamed(context, TheRegisterPage.routeName);
else
Navigator.pushNamed(context, TheGroupManagementPage.routeName);
Run Code Online (Sandbox Code Playgroud)
我希望每次调用导航器导航到新路线时都执行此检查。我可以使用中间件或其他方法来实现此目的吗?
我确实在https://api.flutter.dev/flutter/widgets/RouteObserver-class.html找到了 RouteObserver 类,但我注意到它的 didPush() 不是异步的,所以我无法异步检查是否在推送路由之前我有一个经过身份验证的用户。我不喜欢为每条路线写一张支票的想法,因为它们都是相同的。那么有没有办法用 flutter Navigator 实现某种异步中间件呢?
当我从 React-Native 应用程序调用该函数时,它会抛出以下错误:[Error: NOT_FOUND]。
我研究了它,根据 Firebase 文档,这意味着:“找不到指定的资源,或者请求因未公开的原因(例如白名单)被拒绝。 ”
\n\n这是完整的控制台日志消息:
\n\n\n\n\n[05:51:32] 我| ReactNativeJS \xe2\x96\xb6\xef\xb8\x8e \'错误已处理\', { [错误: NOT_FOUND]\n \xe2\x94\x82 行: 26115,\n \xe2\x94\x82 列: 28, \n \xe2\x94\x94 sourceURL: \' http://localhost:8081/index.bundle?platform=android&dev=true&minify=false \' }
\n
React-Native 代码:
\n\nfirebase.functions().httpsCallable(\'registerNewPatient\')({\n email: \'bimiiix@hotmail.com\',\n password: \'bbbbbb1\'\n}).then((onfulfilled, onrejected) => {\n if (onfulfilled) {\n console.log("OK callback function:", onfulfilled);\n } else {\n console.log("Error callback function:", onrejected)\n }\n}).catch(error => { console.log("ERror handled", error) })\nRun Code Online (Sandbox Code Playgroud)\n\n云功能:
\n\nexports.registerNewPatient = functions.region(\'europe-west3\').https.onCall((data, context) => {\n …Run Code Online (Sandbox Code Playgroud) node.js firebase react-native firebase-authentication google-cloud-functions
我正在尝试处理用户注册或登录我的应用程序时出现的错误。我尝试处理的第一个错误是当用户尝试使用数据库中已存在的电子邮件创建帐户时。我得到以下信息HTTPError:
requests.exceptions.HTTPError: [Errno 400 Client Error: Bad Request for url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=] {
"error": {
"code": 400,
"message": "EMAIL_EXISTS",
"errors": [
{
"message": "EMAIL_EXISTS",
"domain": "global",
"reason": "invalid"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我想访问"message": "EMAIL_EXISTS"下面的值,但我不知道该怎么做。我添加了以下代码,但会产生以下错误:
error_message = error["error"]["message"]
TypeError: 'HTTPError' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
import requests
import pyrebase
class CreateAccount():
def create_account(self):
try:
auth.create_user_with_email_and_password(self.email, self.password)
except requests.exceptions.HTTPError as error:
print(error)
error_message = error["error"]["message"]
print(error_message)
Run Code Online (Sandbox Code Playgroud)