URL изображения пользователя является пустым при использовании Google Firebase Auth - PullRequest
0 голосов
/ 07 июля 2019

Я использую метод аутентификации Google Firebase для аутентификации пользователей. Я получаю информацию о профилях пользователей с помощью метода 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 показывает ноль после сохранения на сервере.Любая помощь будет оценена.

СПАСИБО

1 Ответ

1 голос
/ 07 июля 2019

Не требуется, чтобы поставщик аутентификации предоставил вам URL-адрес изображения для пользователя. Если у провайдера его нет (возможно, из-за того, что пользователь никогда не предоставлял изображение), вы получите ноль. Ваш код должен быть в состоянии справиться с этим делом.

Обратите внимание, что документация API для getPhotoUrl () специально гласит:

Это поле будет автоматически заполнено при создании учетной записи , если AuthCredential, используемый для signInWithCredential (AuthCredential), содержащийся такая информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...