android - studio - google sign in api
Error de inicio de sesión de Google: Código de estado: SIGN_IN_REQUIRED al iniciar sesión con Google en Android (1)
Cada vez que intento iniciar sesión con la API de Google, aparece el siguiente error. Mi manifiesto tiene los permisos apropiados y creé mis credenciales en consecuencia. Entonces no sé cuál es el problema. La pantalla de consentimiento tampoco aparece.
com.omer.notetoself D/NTS:﹕ ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{3678d5c: android.os.BinderProxy@19bcbe30}, message=null}
package com.omer.notetoself;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.Scopes;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.plus.Plus;
`public class Activity_Login extends Activity implements View.OnClickListener,GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{`
private static final int RC_SIGN_IN = 0;
private GoogleApiClient mGoogleApiClient;
/* Is there a ConnectionResult resolution in progress? */
private boolean mIsResolving = false;
/* Should we automatically resolve ConnectionResults when possible? */
private boolean mShouldResolve = false;
EditText editText_userName;
EditText editText_password;
Button button_facebook_login;
Button button_google_login;
Button button_login;
Button button_signUp;
String userName;
String password;
@Override
protected void onStop() {
super.onStop();
mGoogleApiClient.disconnect();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
editText_userName = (EditText)findViewById(R.id.editText_username);
editText_password = (EditText)findViewById(R.id.editText_password);
button_login = (Button)findViewById(R.id.button_login);
button_facebook_login = (Button)findViewById(R.id.button_facebook);
button_google_login = (Button)findViewById(R.id.button_google);
button_signUp = (Button)findViewById(R.id.button_signup);
button_login.setOnClickListener(this);
button_signUp.setOnClickListener(this);
button_facebook_login.setOnClickListener(this);
button_google_login.setOnClickListener(this);
//GOOGLE+ API
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope(Scopes.PROFILE))
.addScope(new Scope(Scopes.EMAIL))
.build();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_activity_login, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_login: //AUTHENTICATE PARSE
userName = editText_userName.getText().toString().trim();
password = editText_password.getText().toString().trim();
AppUtilities.parseLogin(this, userName, password);
break;
case R.id.button_signup: //LAUNCH SIGN UP ACTIVITY
Intent intent = new Intent(
Activity_Login.this,
Activity_SignUp.class);
startActivity(intent);
break;
case R.id.button_facebook:
AppUtilities.facebookLogin(this);
break;
case R.id.button_google:
initGoogle();
break;
}
}
public void initGoogle(){
mGoogleApiClient.connect();
}
@Override
public void onConnected(Bundle bundle) {
String email = Plus.AccountApi.getAccountName(mGoogleApiClient);
AppUtilities.googleLogin(this,email);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
AppUtilities.log(connectionResult.toString());
if (!mIsResolving && mShouldResolve) {
if (connectionResult.hasResolution()) {
try {
connectionResult.startResolutionForResult(this, RC_SIGN_IN);
mIsResolving = true;
} catch (IntentSender.SendIntentException e) {
Log.e(AppUtilities.TAG, "Could not resolve ConnectionResult.", e);
mIsResolving = false;
mGoogleApiClient.connect();
}
} else {
// Could not resolve the connection result, show the user an
// error dialog.
//showErrorDialog(connectionResult);
}
} else {
// Show the signed-out UI
//showSignedOutUI();
}
}
}
Asegúrese de que la huella digital del certificado de firma SHA-1 de su aplicación en la consola de Google Developers pertenezca a la misma clave que se utiliza para firmar APK que está probando.
De forma predeterminada, al ensamblar la versión de depuración de Android Studio, use su propia clave de depuración. Puede cambiarlo haciendo clic con el botón derecho en la aplicación y seleccionando "Abrir configuración del módulo". Vaya a la pestaña "Firma" y configure la misma clave que ha mencionado en la consola de desarrollo. Luego, vaya a la pestaña "Tipos de compilación" y seleccione su configuración de firma.