Android Google SignIn getCredentialAsync nicht erkannt
Posted: 03 Jan 2025, 16:30
Im Anschluss an dieses Tutorial habe ich Folgendes implementiert:
In build.gradle (App)
In MainActivity.java
Ich erhalte die folgende Fehlermeldung

Und die Methodensignatur ist diese

Ich habe keine Ahnung, was ich sonst noch versuchen soll. Die Methode existiert in credentialManager und ich habe für jedes Argument die gleichen Typen
//edit: Es wurde behoben, indem das Argument cancelSignal auf null gesetzt wurde
In build.gradle (App)
Code: Select all
implementation "androidx.credentials:credentials:1.3.0"
implementation "androidx.credentials:credentials-play-services-auth:1.3.0"
implementation "com.google.android.libraries.identity.googleid:googleid:1.1.1"
Code: Select all
import androidx.core.os.CancellationSignal;
import androidx.credentials.Credential;
import androidx.credentials.CredentialManager;
import androidx.credentials.CredentialManagerCallback;
import androidx.credentials.CustomCredential;
import androidx.credentials.GetCredentialRequest;
import androidx.credentials.GetCredentialResponse;
import androidx.credentials.PasswordCredential;
import androidx.credentials.PublicKeyCredential;
import androidx.credentials.exceptions.GetCredentialException;
import com.google.android.libraries.identity.googleid.GetGoogleIdOption;
import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.security.SecureRandom;
import java.util.Random;
public void startGoogleLogin() {
String serverClientId = "";
SecureRandom secureRandom = new SecureRandom();
byte[] randomBytes = new byte[24]; // 24 bytes = 192 bits
secureRandom.nextBytes(randomBytes);
String nonce = java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(randomBytes);
GetGoogleIdOption googleIdOption = new GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setServerClientId(serverClientId)
.setAutoSelectEnabled(true)
.setNonce(nonce)
.build();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
CredentialManager credentialManager = CredentialManager.create(this);
Context context = getApplicationContext();
GetCredentialRequest request = new GetCredentialRequest.Builder()
.addCredentialOption(googleIdOption)
.build();
CancellationSignal cancellationSignal = new CancellationSignal();
Executor executor = Executors.newSingleThreadExecutor();
CredentialManagerCallback callback = new CredentialManagerCallback() {
@Override
public void onResult(GetCredentialResponse result) {
Log.v(TAG, "successful get credential: " + result.getCredential().toString());
}
@Override
public void onError(GetCredentialException e) {
Log.v(TAG, "credential get fail: " + e.toString());
}
};
try {
credentialManager.getCredentialAsync(context, request, cancellationSignal, executor, callback);
} catch (GetCredentialException e) {
Log.v(TAG, "credential get fail: " + e.toString());
}
}
}

Und die Methodensignatur ist diese

Ich habe keine Ahnung, was ich sonst noch versuchen soll. Die Methode existiert in credentialManager und ich habe für jedes Argument die gleichen Typen
//edit: Es wurde behoben, indem das Argument cancelSignal auf null gesetzt wurde