Выход из Firebase и умный замок Google - PullRequest
0 голосов
/ 02 апреля 2020

Итак, у меня есть два вопроса, с которыми я борюсь.

Вопрос 1: В данный момент я отключил автоматический вход здесь: Google -> Управление учетной записью Google -> Безопасность -> Пароль. Менеджер -> Параметры пароля -> «Отключить» автоматический вход

Причина, по которой я это сделал, была в том, что я не хотел, чтобы мой телефон автоматически подписывался, например: Smart Lock

У меня есть два варианта входа по электронной почте / Facebook прямо сейчас, и если я хочу войти в систему с Facebook, или другой пользователь должен использовать мой телефон для входа в свой профиль, я не хочу, чтобы мой телефон для автоматического входа в мою учетную запись. Я видел, что некоторые люди используют .createSignInIntentBuilder().setIsSmartLockEnabled(false), но я не думаю, что это хорошая идея, чтобы отключить функцию. Теперь вот мой вопрос: есть ли разумное решение для этого? или что делают профессиональные разработчики приложений в этой ситуации?

Вопрос 2: Итак, как вы, наверное, догадались, я сделал кнопку "login", а затем у вас есть два варианта Email / Facebook. Но я изо всех сил пытаюсь сделать кнопку "logout"? Когда пользователь вошел в систему, он возвращается к тому же действию, а затем имя входа должно быть удалено, а кнопка выхода из системы должна быть отображена. Итак, мой вопрос: как мне сделать, чтобы кнопка выхода отображалась вместо «входа в систему» ​​с функцией выхода из системы?

После того, как пользователь вошел в систему:

After login

MainActivity


public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
    private static int RC_SIGN_IN = 1337;
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button signInButton = findViewById(R.id.SignInButton);
        signInButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<AuthUI.IdpConfig> providers = Arrays.asList(
                        new AuthUI.IdpConfig.EmailBuilder().build(),
                        new AuthUI.IdpConfig.FacebookBuilder().build());

                startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().setAvailableProviders(providers).build(), RC_SIGN_IN);
            }
        });

        Button goToListButton = findViewById(R.id.List);

        goToListButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, ListActivity.class));
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN){
            IdpResponse response = IdpResponse.fromResultIntent(data);
            if(resultCode == RESULT_OK){
                if (user != null) {
                    Log.d(TAG, user.getUid());
                    ((TextView)findViewById(R.id.userId)).setText(user.getUid());
                    for (UserInfo userInfo : user.getProviderData()) {
                        if (userInfo.getProviderId().equals("facebook.com")) {
                            Log.d("TAG", "User is signed in with Facebook");
                            String photoUrl = user.getPhotoUrl().toString();
                            photoUrl = photoUrl + "?height=500";
                            Picasso.with(this).load(photoUrl).into((ImageView)findViewById(R.id.picture));
                        }else{
                            ImageView imV = findViewById(R.id.picture);
                            imV.setImageResource(R.drawable.pbstd);
                        }
                    }
                }
            }else{
                Log.d(TAG, response.getError().getMessage());
            }
        }
    }
}

ListActivity

public class ListActivity extends AppCompatActivity {

    private final String TAG = ListActivity.class.getSimpleName();
    private FirebaseFirestore firestore = FirebaseFirestore.getInstance();
    private ListenerRegistration itemsListener;
    private ListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ListAdapter(new ArrayList<String>());
        recyclerView.setAdapter(adapter);

        Map<String, Object> item = new HashMap<>();
        item.put("text", new Date().toString());

        firestore.collection("items").add(item).addOnSuccessListener(
                new OnSuccessListener<DocumentReference>() {
                    @Override
                    public void onSuccess(DocumentReference documentReference) {
                        Log.d(TAG, "Added " + documentReference.getId());
                    }
                }
        )
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d(TAG, e.getMessage());
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        itemsListener = firestore.collection("items").addSnapshotListener(
                new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                        if (queryDocumentSnapshots != null && !queryDocumentSnapshots.getDocuments().isEmpty()){
                            List<String> items = new ArrayList<>();
                            for (DocumentSnapshot snapshot : queryDocumentSnapshots.getDocuments()){
                                items.add(snapshot.getData().get("text").toString());
                            }
                            adapter.setItems(items);
                        }
                    }
                }
        );
    }

    @Override
    protected void onPause() {
        super.onPause();
        itemsListener.remove();
    }
}

ListAdapter


public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder>{

    List<String> items;

    public ListAdapter(List<String> items){
        this.items = items;
    }

    public void setItems(List<String> items) {
        this.items = items;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        ViewHolder viewholder = new ViewHolder(view);
        return viewholder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.textView.setText(items.get(position));
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView textView;

        public ViewHolder(final View itemView){
            super(itemView);
            textView = itemView.findViewById(R.id.textView2);
        }
    }

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