Android 关于如何使用的困惑;IdToken“;适当地
我一直在尝试在我的应用程序中实现一个Android 关于如何使用的困惑;IdToken“;适当地,android,firebase,oauth-2.0,google-api,firebase-authentication,Android,Firebase,Oauth 2.0,Google Api,Firebase Authentication,我一直在尝试在我的应用程序中实现一个oauth2.0身份验证过程 我们有一个带有RESTAPI的后端服务器,完全用Java编码,并集成了Spring 该应用程序已在Firebase上注册(我可以通过控制台访问),并且我已成功实施Google登录过程和电子邮件/密码(用户将添加到Firebase控制台中显示的我的用户库中) 我这里的问题很可能是我对OAuth进程的理解不够:据我所知,我应该在应用程序中使用FirebaseUser.getIdToken(bool)来获取我发送的JWT(JSON We
oauth2.0
身份验证过程
我们有一个带有RESTAPI的后端服务器,完全用Java编码,并集成了Spring
该应用程序已在Firebase
上注册(我可以通过控制台访问),并且我已成功实施Google登录
过程和电子邮件/密码
(用户将添加到Firebase控制台中显示的我的用户库中)
我这里的问题很可能是我对OAuth进程的理解不够:据我所知,我应该在应用程序中使用FirebaseUser.getIdToken(bool)
来获取我发送的JWT
(JSON Web令牌)(通过HTTPPOST
)向后端服务器发送需要身份验证的用户请求(例如,发送服务器应保存在用户数据库中与发送请求的用户关联的UID相关的行中的信息)
我相信这是一个我应该遵循,以实现我的目标。但是,文档中显示的这部分代码片段让我感到困惑:
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(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();
}
}
});
FirebaseUser mUser=FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(真)
.addOnCompleteListener(新的OnCompleteListener(){
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
字符串idToken=task.getResult().getToken();
//通过HTTPS将令牌发送到后端
// ...
}否则{
//Handle error->task.getException();
}
}
});
idToken
长度为1232个字符。我有义务把整根绳子都送出去吗?结构如下:{alg,kid}.{iss,name,picture,aud,auth\u time,user\u id,sub,iat,exp,email,email\u-verified,firebase{…}.XXX
。因为我不会在服务器端使用它们,所以有很多字段需要删减//通过HTTPS将令牌发送到您的后端可能是什么样子的(一个包含字符串的简单URL,或者是否有适当的方式发送JWT)
https://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
或https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123
Admin SDK
在所有这些方面的作用是什么implementation'com.google.firebase:firebase admin:6.3.0'
是否只需要在服务器端代码中<显然是的强>firebase adminsdk.json
文件插入到哪里在Firebase Admin SDK中设置由Google提供的代码。FileInputStream servicecomport=newfileinputstream(“path/to/serviceAccountKey.json”)
和FileInputStream refreshttoken=newfileinputstream(“path/to/refreshttoken.json”)代码>:我应该插入哪个JSON文件刚才提到的那个强>
google_services.json
数据库。是否可以使用我自己的数据库(它是一个托管在GoDaddy上的MySQL)是的强>