2016-12-12 2 views
2

У меня возникли проблемы с подключением моего приложения с помощью входа в google. Кажется, что результат, который возвращается с handleSignInResult (результат GoogleSignInResult) является ложным (и должен быть правдой).

Может кто-нибудь помочь и объяснить, почему это происходит? Я не могу понять, что может произойти, что может привести к его провалу (с и без токена, который он все еще терпит неудачу).Google Войти в приложение для Android не работает

public class GoogleSignIn extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener{ 

//Pass this client ID to the requestIdToken or requestServerAuthCode method when you create the GoogleSignInOptions object. 

private final int RC_SIGN_IN = 9001; 
private final String TOKEN_CRED_ID = "*******-the web application credentials copied from https://console.developers.google.com/apis/credentials"; 
private GoogleApiClient mGoogleApiClient; 
private SignInButton SignInBtn; 
private TextView SignInStatusView; 



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

    SignInBtn = (SignInButton) findViewById(R.id.sign_in_button); 
    SetButtons(); 
    SignInStatusView = (TextView) findViewById(R.id.google_sign_in_status); 
    // Get the user's ID and basic profile info using google 

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .requestIdToken(TOKEN_CRED_ID) 
      .build(); 


    // This object is used in order to access the Google API for Signing in 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this/* AppCompatActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 


    SignInBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signIn(); 
     } 
    }); 

    final Button SignOutBtn = (Button) findViewById(R.id.sign_out_and_disconnect); 
    SignOutBtn.setVisibility(View.GONE); 
    SignOutBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signOut(); 
     } 
    }); 


} 

private void CustomizeSignInButton() 
{ 
    SignInBtn = (SignInButton) findViewById(R.id.sign_in_button); 
    SignInBtn.setSize(SignInButton.SIZE_STANDARD); 
} 

private void SetButtons() 
{ 
    CustomizeSignInButton(); 

    Button back = (Button) findViewById(R.id.go_back); 
    back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      GoogleSignIn.this.finish(); 
     } 
    }); 


} 


protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 



protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 

private void signOut() { 
    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        // [START_EXCLUDE] 
        updateUI(false); 
        // [END_EXCLUDE] 
       } 
      }); 
} 



@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    System.out.println("\n\n\n\nRequest code: " + requestCode); 
    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     if (resultCode == RESULT_OK) 
     { 
      System.out.println("OK RESULT"); 
     } 
     else 
     { 
      System.out.println("NOT OK RESULT"); 
     } 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 
} 


private void handleSignInResult(GoogleSignInResult result) { 
    System.out.println("handleSignInResult:" + result.isSuccess()); 
    if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 
     SignInStatusView.setText(getString(R.string.signed_in, acct.getDisplayName())); 
     updateUI(true); 
     SaveClientDetails(acct); 
    } else { 
     // Signed out, show unauthenticated UI. 
     updateUI(false); 
    } 
} 


private void updateUI(boolean signedIn) { 
    if (signedIn) { 
     findViewById(R.id.sign_in_button).setVisibility(View.GONE); 
     findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE); 
    } else { 
     SignInStatusView.setText(R.string.signed_out); 
     findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE); 
     findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE); 
    } 
} 


private void SaveClientDetails(GoogleSignInAccount account) 
{ 
    // Save to DB 
    System.out.println("*\nIn SAVE\n*"); 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    // Connection failed completely. Sign in and other functions are not available. 
    System.out.println("ERROR ::: Problems with connection"); 
} 

}

+0

сделал вы применяете ключ SHA-1 для отладки – siva35

+0

как это сделать? –

ответ

1

1. Получить SHA1 ключ Link

2. Вставить имя пакета и SHA1 отпечатков пальцев и нажмите на Enable Google Вход в систему. а затем, наконец, нажмите на Сформировать файл конфигурации, чтобы загрузить ваш Google-services.json From This Link

3. Переместить файл Google-services.json в папку приложения Reffer Link

4. Теперь запустите

+1

Во-первых, спасибо вам большое за это! @ siva35 Пришлось перейти в консоль Firebase -> Настройки-> Настройки проекта и добавить SHA-1, сгенерированный вручную. Просто для тех, кто использует Firebase, чтобы знать :) –

Смежные вопросы