Created
August 17, 2017 16:30
-
-
Save valokafor/d4d5663bcdcf999be1cd41f331a3b883 to your computer and use it in GitHub Desktop.
AuthUI Activity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.okason.diary.ui.auth; | |
public class AuthUiActivity extends AppCompatActivity { | |
private static final String GOOGLE_TOS_URL = "https://www.google.com/policies/terms/"; | |
private static final int RC_SIGN_IN = 100; | |
private Activity mActivity; | |
private MaterialDialog progressDialog; | |
private boolean shouldShowDialog = false; | |
@BindView(android.R.id.content) | |
View mRootView; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_auth_ui); | |
ButterKnife.bind(this); | |
mActivity = this; | |
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); | |
setSupportActionBar(toolbar); | |
getSupportActionBar().setDisplayHomeAsUpEnabled(true); | |
if (FirebaseAuth.getInstance().getCurrentUser() != null){ | |
startActivity(new Intent(mActivity, NoteListActivity.class)); | |
return; | |
} | |
showSignInScreen(); | |
} | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
} | |
private void showSignInScreen() { | |
startActivityForResult( | |
AuthUI.getInstance().createSignInIntentBuilder() | |
.setLogo(R.mipmap.ic_launcher) | |
.setTheme(R.style.GreenTheme) | |
.setAvailableProviders(getSelectedProviders()) | |
.setTosUrl(GOOGLE_TOS_URL) | |
.setIsSmartLockEnabled(true, true) | |
.setAllowNewEmailAccounts(true) | |
.build(), | |
RC_SIGN_IN); | |
} | |
@MainThread | |
private List<AuthUI.IdpConfig> getSelectedProviders() { | |
List<AuthUI.IdpConfig> selectedProviders = new ArrayList<>(); | |
selectedProviders.add(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build()); | |
selectedProviders.add( | |
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER) | |
.setPermissions(getGooglePermissions()) | |
.build()); | |
selectedProviders.add( | |
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER) | |
.build()); | |
return selectedProviders; | |
} | |
@MainThread | |
private List<String> getGooglePermissions() { | |
List<String> result = new ArrayList<>(); | |
result.add(Scopes.DRIVE_FILE); | |
return result; | |
} | |
private List<String> getFacebookPermissions() { | |
List<String> result = new ArrayList<>(); | |
result.add("user_photos"); | |
return result; | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
super.onActivityResult(requestCode, resultCode, data); | |
if (requestCode == RC_SIGN_IN) { | |
handleSignInResponse(resultCode, data); | |
return; | |
} | |
makeToast(getString(R.string.unknown_response)); | |
} | |
@MainThread | |
private void handleSignInResponse(int resultCode, final Intent data) { | |
IdpResponse response = IdpResponse.fromResultIntent(data); | |
// Successfully signed in | |
if (resultCode == ResultCodes.OK) { | |
startSignedInActivity(response); | |
finish(); | |
return; | |
} else { | |
// Sign in failed | |
if (response == null) { | |
// User pressed back button | |
showSnackbar(R.string.sign_in_cancelled); | |
return; | |
} | |
if (response.getErrorCode() == ErrorCodes.NO_NETWORK) { | |
showSnackbar(R.string.no_internet_connection); | |
return; | |
} | |
if (response.getErrorCode() == ErrorCodes.UNKNOWN_ERROR) { | |
showSnackbar(R.string.unknown_error); | |
return; | |
} | |
} | |
showSnackbar(R.string.unknown_sign_in_response); | |
} | |
private void startSignedInActivity(IdpResponse response) { | |
startActivity(new Intent(mActivity, NoteListActivity.class)); | |
} | |
public static Intent createIntent(Context context) { | |
Intent in = new Intent(); | |
in.setClass(context, AuthUiActivity.class); | |
return in; | |
} | |
@MainThread | |
private void showSnackbar(@StringRes int errorMessageRes) { | |
Snackbar.make(mRootView, errorMessageRes, Snackbar.LENGTH_LONG).show(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment