don*_*rog 4 phone-number firebase firebase-authentication
我知道,我可以使用Firebase's手机上的验证Android和iOS,但问题是,有关客户端的验证信息可以很容易地在客户端,因为我只使用服务器端的SSL证书伪造的,所以,只有客户端知道服务器是可信的.
所以,我决定在服务器端发送手机号码并在那里检查:发送验证码并向用户询问此验证码.但我看不到任何C++服务器Firebase SDK,只有客户端C++ SDK可用.所以,我有两个选择:
请帮助我解决Firebase中的这种误解.
客户端绝对适用于此.流程是这样的:
这是有效的,因为恶意用户只有在拥有手机时才能知道代码.它不保证设备是具有该电话号码的设备(用户可以拥有两部电话,或者通过笔记本电脑上的电话登录),但它确实验证用户是否可以访问该号码.
要验证您自己的后端,请检索Firebase ID令牌.这只是一小块base64编码的JSON,但重要的是它由Firebase加密签名.这意味着在您的服务器上,您可以验证它是否真的是由Firebase创建的,用于包含在其中的用户和电话号码.如果用户无法访问基础帐户,则无法生成其中一个令牌.
有关更多信息,请参阅有关验证ID令牌的文档!
所以你的下一步将是:
您可以在登录时随时执行此操作.
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
String idToken = task.getResult().getToken();
// Send token to your backend via HTTPS
// ...
} else {
// Handle error -> task.getException();
}
}
});
Run Code Online (Sandbox Code Playgroud)
管理SDK设置为开箱即用,以检查ID令牌的正确证书,受众,到期日期和其他重要属性.
admin.auth().verifyIdToken(idToken)
.then(function(decodedToken) {
var uid = decodedToken.uid;
// ...
}).catch(function(error) {
// Handle error
});
Run Code Online (Sandbox Code Playgroud)
decodedToken 将包含电话号码的属性!
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |