Skip to content

Instantly share code, notes, and snippets.

@valokafor
Created August 17, 2017 16:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save valokafor/d4d5663bcdcf999be1cd41f331a3b883 to your computer and use it in GitHub Desktop.
Save valokafor/d4d5663bcdcf999be1cd41f331a3b883 to your computer and use it in GitHub Desktop.
AuthUI Activity
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