我正在使用google firebase auth方法对用户进行身份验证,我正在使用firebase方法获取用户个人资料信息并将其保存在服务器上。 当我尝试在服务器上保存用户图像uri时,它显示为空值。
以下是我的代码:
FirebaseAuth fAuth = FirebaseAuth.getInstance();
FirebaseUser user = fAuth.getCurrentUser();
if(user != null){
saveData();
}
private void saveData(){
final String uid = user.getUid();
final String email = user.getEmail();
final Uri profileImage = user.getPhotoUrl();
final String name = user.getDisplayName();
RequestQueue requestQueue = Volley.newRequestQueue(BookForm.this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>(){
@Override
public void onResponse(String response) {
if(response.equals("Successfully inserted")){
Toast.makeText(getApplicationContext(),"Successful",Toast.LENGTH_SHORT.show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse status = error.networkResponse;
Toast.makeText(getApplicationContext(),"Error:"+status,Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> map = new HashMap<>();
map.put("userId",uid);
map.put("email",email);
map.put("name",name);
map.put("profileImage", String.valueOf(profileImage));
return map;
}
};
requestQueue.add(stringRequest);
}
这就是我向服务器发送数据的方式。
router.post('/addData', (req,res) => {
var data = {
User_id: req.body.userId,
Email:req.body.email,
Profile_image:req.body.profileImage,
Name: req.body.name
};
MongoClient.connect(dburl, {useNewUrlParser:true} ,(err,client) => {
if(err){
console.log("Error".red, +err);
}
else{
var collect = client.db('my_db').collection('Example');
collect.insertOne(data, (err,resp) =>{
if(err){
console.log("Error".red, +err);
}
else{
res.send("Successfully inserted");
}
client.close();
});
}
});
});
请让我知道为什么图像uri保存到服务器后为什么显示为空。任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
不要求身份验证提供程序必须为您提供用户的图像URL。如果提供者没有提供者(可能是因为用户从未提供图像),那么您将得到null。您的代码应该能够处理这种情况。
请注意,getPhotoUrl()的API文档特别指出:
在创建帐户后,该字段将自动填充,如果 包含在signInWithCredential(AuthCredential)上的AuthCredential 这样的信息。