Привет, я новичок в создании приложений, я беру логин из репозитория в github от автора Rozdoum. немного измените токен facebook, и он будет работать с лицом, но я не могу заставить работать логин Google. Вот код репутации входа в систему.
public class LoginActivity extends BaseActivity<LoginView, LoginPresenter> implements LoginView, GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = LoginActivity.class.getSimpleName();
private static final int SIGN_IN_GOOGLE = 9001;
public static final int LOGIN_REQUEST_CODE = 10001;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private GoogleApiClient mGoogleApiClient;
private CallbackManager mCallbackManager;
private String profilePhotoUrlLarge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
initGoogleSignIn();
initFirebaseAuth();
initFacebookSignIn();
}
private void initGoogleSignIn() {
mGoogleApiClient = GoogleApiHelper.createGoogleApiClient(this);
mAuth = FirebaseAuth.getInstance();
findViewById(R.id.googleSignInButton).setOnClickListener(view -> presenter.onGoogleSignInClick());
}
private void initFirebaseAuth() {
mAuth = FirebaseAuth.getInstance();
if (mAuth.getCurrentUser() != null) {
LogoutHelper.signOut(mGoogleApiClient, this);
}
mAuthListener = firebaseAuth -> {
final FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// Profile is signed in
LogUtil.logDebug(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
presenter.checkIsProfileExist(user.getUid());
setResult(RESULT_OK);
} else {
// Profile is signed out
LogUtil.logDebug(TAG, "onAuthStateChanged:signed_out");
}
};
}
private void initFacebookSignIn() {
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
LogUtil.logDebug(TAG, "facebook:onSuccess:" + loginResult);
presenter.handleFacebookSignInResult(loginResult);
}
@Override
public void onCancel() {
LogUtil.logDebug(TAG, "facebook:onCancel");
}
@Override
public void onError(FacebookException error) {
LogUtil.logError(TAG, "facebook:onError", error);
showSnackBar(error.getMessage());
}
});
findViewById(R.id.facebookSignInButton).setOnClickListener(v -> presenter.onFacebookSignInClick());
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.stopAutoManage(this);
mGoogleApiClient.disconnect();
}
}
@NonNull
@Override
public LoginPresenter createPresenter() {
if (presenter == null) {
return new LoginPresenter(this);
}
return presenter;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == SIGN_IN_GOOGLE) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
presenter.handleGoogleSignInResult(result);
}
}
@Override
public void startCreateProfileActivity() {
Intent intent = new Intent(LoginActivity.this, CreateProfileActivity.class);
intent.putExtra(CreateProfileActivity.LARGE_IMAGE_URL_EXTRA_KEY, profilePhotoUrlLarge);
startActivity(intent);
}
@Override
public void firebaseAuthWithCredentials(AuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, task -> {
LogUtil.logDebug(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
presenter.handleAuthError(task);
}
});
}
@Override
public void setProfilePhotoUrl(String url) {
profilePhotoUrlLarge = url;
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
// An unresolvable error has occurred and Google APIs (including Sign-In) will not
// be available.
LogUtil.logDebug(TAG, "onConnectionFailed:" + connectionResult);
showSnackBar(R.string.error_google_play_services);
hideProgress();
}
@Override
public void signInWithGoogle() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, SIGN_IN_GOOGLE);
}
@Override
public void signInWithFacebook() {
LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("email", "public_profile"));
}
}
Кнопка входа в Google работает и показывает список писем, но я выбираю одно письмо, и ничего не происходит. Я пробую эти решения Объединение Facebook и Google auth для Firebase Android но не работает.