recuperação de passe e uns erritos no google
parent
7aa8b79009
commit
089cb14998
|
|
@ -44,7 +44,6 @@ dependencies {
|
||||||
implementation(libs.googleid)
|
implementation(libs.googleid)
|
||||||
implementation(libs.firebase.database)
|
implementation(libs.firebase.database)
|
||||||
implementation(libs.recyclerview)
|
implementation(libs.recyclerview)
|
||||||
implementation(libs.play.services.auth)
|
|
||||||
testImplementation(libs.junit)
|
testImplementation(libs.junit)
|
||||||
androidTestImplementation(libs.ext.junit)
|
androidTestImplementation(libs.ext.junit)
|
||||||
androidTestImplementation(libs.espresso.core)
|
androidTestImplementation(libs.espresso.core)
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,22 @@ import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.activity.EdgeToEdge;
|
import androidx.activity.EdgeToEdge;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.graphics.Insets;
|
import androidx.core.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignIn;
|
import androidx.credentials.Credential;
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
|
import androidx.credentials.CustomCredential;
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
|
import androidx.credentials.GetCredentialRequest;
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
|
import androidx.credentials.GetCredentialResponse;
|
||||||
import com.google.android.gms.common.api.ApiException;
|
import androidx.credentials.exceptions.GetCredentialException;
|
||||||
import com.google.android.gms.tasks.Task;
|
import androidx.credentials.exceptions.NoCredentialException;
|
||||||
|
import androidx.credentials.CredentialManager;
|
||||||
|
|
||||||
|
import com.google.android.libraries.identity.googleid.GetGoogleIdOption;
|
||||||
|
import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential;
|
||||||
|
import com.google.android.libraries.identity.googleid.GoogleIdTokenParsingException;
|
||||||
import com.google.firebase.FirebaseApp;
|
import com.google.firebase.FirebaseApp;
|
||||||
import com.google.firebase.auth.AuthCredential;
|
import com.google.firebase.auth.AuthCredential;
|
||||||
import com.google.firebase.auth.FirebaseAuth;
|
import com.google.firebase.auth.FirebaseAuth;
|
||||||
|
|
@ -40,7 +43,7 @@ public class CriarContaActivity extends AppCompatActivity {
|
||||||
private Button googleButton2;
|
private Button googleButton2;
|
||||||
private ProgressBar loadingProgressBar;
|
private ProgressBar loadingProgressBar;
|
||||||
private FirebaseAuth firebaseAuth;
|
private FirebaseAuth firebaseAuth;
|
||||||
private GoogleSignInClient googleSignInClient;
|
private CredentialManager credentialManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -63,13 +66,7 @@ public class CriarContaActivity extends AppCompatActivity {
|
||||||
|
|
||||||
FirebaseApp.initializeApp(this);
|
FirebaseApp.initializeApp(this);
|
||||||
firebaseAuth = FirebaseAuth.getInstance();
|
firebaseAuth = FirebaseAuth.getInstance();
|
||||||
|
credentialManager = CredentialManager.create(this);
|
||||||
// Configurar Google Sign-In
|
|
||||||
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
|
|
||||||
.requestIdToken(getString(R.string.default_web_client_id))
|
|
||||||
.requestEmail()
|
|
||||||
.build();
|
|
||||||
googleSignInClient = GoogleSignIn.getClient(this, gso);
|
|
||||||
|
|
||||||
loginButton2.setOnClickListener(v -> criarConta());
|
loginButton2.setOnClickListener(v -> criarConta());
|
||||||
googleButton2.setOnClickListener(v -> signInWithGoogle());
|
googleButton2.setOnClickListener(v -> signInWithGoogle());
|
||||||
|
|
@ -180,29 +177,46 @@ public class CriarContaActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void signInWithGoogle() {
|
private void signInWithGoogle() {
|
||||||
Intent signInIntent = googleSignInClient.getSignInIntent();
|
String webClientId = getString(R.string.default_web_client_id);
|
||||||
googleSignInLauncher.launch(signInIntent);
|
|
||||||
|
if (webClientId.equals("YOUR_WEB_CLIENT_ID_HERE")) {
|
||||||
|
Toast.makeText(this, "Por favor, configure o Web Client ID no Firebase Console.", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ActivityResultLauncher<Intent> googleSignInLauncher = registerForActivityResult(
|
GetGoogleIdOption googleIdOption = new GetGoogleIdOption.Builder()
|
||||||
new ActivityResultContracts.StartActivityForResult(),
|
.setFilterByAuthorizedAccounts(false)
|
||||||
result -> {
|
.setServerClientId(webClientId)
|
||||||
if (result.getResultCode() == RESULT_OK) {
|
.build();
|
||||||
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
|
|
||||||
try {
|
GetCredentialRequest request = new GetCredentialRequest.Builder()
|
||||||
GoogleSignInAccount account = task.getResult(ApiException.class);
|
.addCredentialOption(googleIdOption)
|
||||||
firebaseAuthWithGoogle(account.getIdToken());
|
.build();
|
||||||
} catch (ApiException e) {
|
|
||||||
Toast.makeText(this, "Erro ao criar conta com Google: " + e.getMessage(), Toast.LENGTH_LONG).show();
|
toggleLoading(true);
|
||||||
}
|
|
||||||
} else {
|
credentialManager.getCredential(
|
||||||
Toast.makeText(this, "Criação de conta com Google cancelada.", Toast.LENGTH_SHORT).show();
|
this,
|
||||||
}
|
request,
|
||||||
}
|
null
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleGoogleSignInResult(GetCredentialResponse result) {
|
||||||
|
Credential credential = result.getCredential();
|
||||||
|
|
||||||
|
if (credential instanceof CustomCredential) {
|
||||||
|
CustomCredential customCredential = (CustomCredential) credential;
|
||||||
|
if (GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL.equals(customCredential.getType())) {
|
||||||
|
GoogleIdTokenCredential googleIdTokenCredential = GoogleIdTokenCredential
|
||||||
|
.createFrom(customCredential.getData());
|
||||||
|
String idToken = googleIdTokenCredential.getIdToken();
|
||||||
|
firebaseAuthWithGoogle(idToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void firebaseAuthWithGoogle(String idToken) {
|
private void firebaseAuthWithGoogle(String idToken) {
|
||||||
toggleLoading(true);
|
|
||||||
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
|
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
|
||||||
firebaseAuth.signInWithCredential(credential)
|
firebaseAuth.signInWithCredential(credential)
|
||||||
.addOnCompleteListener(this, task -> {
|
.addOnCompleteListener(this, task -> {
|
||||||
|
|
|
||||||
|
|
@ -12,19 +12,23 @@ import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.activity.EdgeToEdge;
|
import androidx.activity.EdgeToEdge;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.graphics.Insets;
|
import androidx.core.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignIn;
|
import androidx.credentials.CredentialManager;
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
|
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
|
import androidx.credentials.Credential;
|
||||||
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
|
import androidx.credentials.CustomCredential;
|
||||||
import com.google.android.gms.common.api.ApiException;
|
import androidx.credentials.GetCredentialRequest;
|
||||||
import com.google.android.gms.tasks.Task;
|
import androidx.credentials.GetCredentialResponse;
|
||||||
|
import androidx.credentials.exceptions.GetCredentialException;
|
||||||
|
import androidx.credentials.exceptions.NoCredentialException;
|
||||||
|
|
||||||
|
import com.google.android.libraries.identity.googleid.GetGoogleIdOption;
|
||||||
|
import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential;
|
||||||
|
import com.google.android.libraries.identity.googleid.GoogleIdTokenParsingException;
|
||||||
import com.google.firebase.FirebaseApp;
|
import com.google.firebase.FirebaseApp;
|
||||||
import com.google.firebase.auth.AuthCredential;
|
import com.google.firebase.auth.AuthCredential;
|
||||||
import com.google.firebase.auth.FirebaseAuth;
|
import com.google.firebase.auth.FirebaseAuth;
|
||||||
|
|
@ -46,8 +50,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||||
private TextView ouTextView;
|
private TextView ouTextView;
|
||||||
private ProgressBar loadingProgressBar;
|
private ProgressBar loadingProgressBar;
|
||||||
private FirebaseAuth firebaseAuth;
|
private FirebaseAuth firebaseAuth;
|
||||||
private GoogleSignInClient googleSignInClient;
|
private CredentialManager credentialManager;
|
||||||
private static final int RC_SIGN_IN = 9001;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -74,13 +77,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||||
|
|
||||||
FirebaseApp.initializeApp(this);
|
FirebaseApp.initializeApp(this);
|
||||||
firebaseAuth = FirebaseAuth.getInstance();
|
firebaseAuth = FirebaseAuth.getInstance();
|
||||||
|
credentialManager = CredentialManager.create(this);
|
||||||
// Configurar Google Sign-In
|
|
||||||
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
|
|
||||||
.requestIdToken(getString(R.string.default_web_client_id))
|
|
||||||
.requestEmail()
|
|
||||||
.build();
|
|
||||||
googleSignInClient = GoogleSignIn.getClient(this, gso);
|
|
||||||
|
|
||||||
loginButton.setOnClickListener(v -> validarLogin());
|
loginButton.setOnClickListener(v -> validarLogin());
|
||||||
criarContaTextView.setOnClickListener(new View.OnClickListener() {
|
criarContaTextView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
|
@ -191,29 +188,46 @@ public class LoginActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void signInWithGoogle() {
|
private void signInWithGoogle() {
|
||||||
Intent signInIntent = googleSignInClient.getSignInIntent();
|
String webClientId = getString(R.string.default_web_client_id);
|
||||||
googleSignInLauncher.launch(signInIntent);
|
|
||||||
|
if (webClientId.equals("YOUR_WEB_CLIENT_ID_HERE")) {
|
||||||
|
Toast.makeText(this, "Por favor, configure o Web Client ID no Firebase Console.", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ActivityResultLauncher<Intent> googleSignInLauncher = registerForActivityResult(
|
GetGoogleIdOption googleIdOption = new GetGoogleIdOption.Builder()
|
||||||
new ActivityResultContracts.StartActivityForResult(),
|
.setFilterByAuthorizedAccounts(false)
|
||||||
result -> {
|
.setServerClientId(webClientId)
|
||||||
if (result.getResultCode() == RESULT_OK) {
|
.build();
|
||||||
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
|
|
||||||
try {
|
GetCredentialRequest request = new GetCredentialRequest.Builder()
|
||||||
GoogleSignInAccount account = task.getResult(ApiException.class);
|
.addCredentialOption(googleIdOption)
|
||||||
firebaseAuthWithGoogle(account.getIdToken());
|
.build();
|
||||||
} catch (ApiException e) {
|
|
||||||
Toast.makeText(this, "Erro ao fazer login com Google: " + e.getMessage(), Toast.LENGTH_LONG).show();
|
toggleLoading(true);
|
||||||
}
|
|
||||||
} else {
|
credentialManager.getCredential(
|
||||||
Toast.makeText(this, "Login com Google cancelado.", Toast.LENGTH_SHORT).show();
|
this,
|
||||||
}
|
request,
|
||||||
}
|
null
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleGoogleSignInResult(GetCredentialResponse result) {
|
||||||
|
Credential credential = result.getCredential();
|
||||||
|
|
||||||
|
if (credential instanceof CustomCredential) {
|
||||||
|
CustomCredential customCredential = (CustomCredential) credential;
|
||||||
|
if (GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL.equals(customCredential.getType())) {
|
||||||
|
GoogleIdTokenCredential googleIdTokenCredential = GoogleIdTokenCredential
|
||||||
|
.createFrom(customCredential.getData());
|
||||||
|
String idToken = googleIdTokenCredential.getIdToken();
|
||||||
|
firebaseAuthWithGoogle(idToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void firebaseAuthWithGoogle(String idToken) {
|
private void firebaseAuthWithGoogle(String idToken) {
|
||||||
toggleLoading(true);
|
|
||||||
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
|
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
|
||||||
firebaseAuth.signInWithCredential(credential)
|
firebaseAuth.signInWithCredential(credential)
|
||||||
.addOnCompleteListener(this, task -> {
|
.addOnCompleteListener(this, task -> {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">LifeGrid</string>
|
<string name="app_name">LifeGrid</string>
|
||||||
<!-- Substitua pelo Web Client ID do Firebase Console -> Authentication -> Sign-in method -> Google -->
|
<!-- Substitua pelo Web Client ID do Firebase Console -> Authentication -> Sign-in method -> Google -->
|
||||||
<string name="default_web_client_id">YOUR_WEB_CLIENT_ID_HERE</string>
|
<string name="default_web_client_id">1019731295596-llnufhs1t24ijo7afa5c85lkc98pk27q.apps.googleusercontent.com</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue