Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.pbwi.actifitapp;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.Signature;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Base64;
- import android.util.Log;
- import android.util.Patterns;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- import com.facebook.AccessToken;
- import com.facebook.CallbackManager;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.login.LoginResult;
- import com.facebook.login.widget.LoginButton;
- import com.google.android.gms.auth.api.Auth;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.auth.api.signin.GoogleSignInResult;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.SignInButton;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.AuthCredential;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FacebookAuthProvider;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.auth.GoogleAuthProvider;
- import com.facebook.FacebookSdk;
- import com.facebook.appevents.AppEventsLogger;
- import java.math.BigDecimal;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.Currency;
- public class MainActivity extends AppCompatActivity {
- private static final String TAG = "MainActivity";
- Button guzik_rejestracji;
- SignInButton googleSignInButton;
- LoginButton loginFbButton;
- //progress dialog
- private ProgressDialog progressDialog;
- //firebase auth object
- private FirebaseAuth firebaseAuth;
- private GoogleSignInOptions gso;
- private GoogleApiClient mGoogleSignInClient;
- private FirebaseAuth.AuthStateListener firebaseAuthListener;
- private CallbackManager mCallbackManager;
- //default value of request code
- static final int RC_SIGN_IN = 1;
- AppEventsLogger logger;
- @Override
- protected void onStart() {
- super.onStart();
- firebaseAuth.addAuthStateListener(firebaseAuthListener);
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- firebaseAuth = FirebaseAuth.getInstance();
- FacebookSdk.sdkInitialize(getApplicationContext());
- setControls();
- loginFbButton.setReadPermissions("email", "public_profile");
- if (firebaseAuth.getCurrentUser() != null) {
- Intent intent=new Intent(MainActivity.this, ActivityDlaZalogowanych.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- startActivity(intent);
- finish();
- }
- // PackageInfo info;
- // try {
- // info = getPackageManager().getPackageInfo("com.example.pbwi.actifitapp", PackageManager.GET_SIGNATURES);
- // for (Signature signature : info.signatures) {
- // MessageDigest md;
- // md = MessageDigest.getInstance("SHA");
- // md.update(signature.toByteArray());
- // String something = new String(Base64.encode(md.digest(), 0));
- // //String something = new String(Base64.encodeBytes(md.digest()));
- // Log.e("hash key", something);
- // }
- // } catch (PackageManager.NameNotFoundException e1) {
- // Log.e("name not found", e1.toString());
- // } catch (NoSuchAlgorithmException e) {
- // Log.e("no such an algorithm", e.toString());
- // } catch (Exception e) {
- // Log.e("exception", e.toString());
- // }
- mCallbackManager = CallbackManager.Factory.create();
- googleSignInButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- signIn();
- }
- });
- //if you off the app, this listener now that you have acco on firebase and next time you dont need to login
- firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- if(firebaseAuth.getCurrentUser() !=null){
- startActivity(new Intent(MainActivity.this, ActivityDlaZalogowanych.class));
- }
- }
- };
- //configure google sign in
- gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestIdToken(getString(R.string.default_web_client_id))
- .requestEmail()
- .build();
- // Build a GoogleSignInClient with the options specified by gso.
- mGoogleSignInClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
- //if something went wrong
- @Override
- public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
- Toast.makeText(MainActivity.this, getString(R.string.authGoWrong), Toast.LENGTH_SHORT).show();
- }
- })
- .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- .build();
- loginFbButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- Log.d(TAG, "facebook:onSuccess:" + loginResult);
- Toast.makeText(MainActivity.this,"Logging in with fb. Please wait",Toast.LENGTH_LONG).show();
- handleFacebookAccessToken(loginResult.getAccessToken());
- }
- @Override
- public void onCancel() {
- Log.d(TAG, "facebook:onCancel");
- // [START_EXCLUDE]
- // [END_EXCLUDE]
- }
- @Override
- public void onError(FacebookException error) {
- Log.d(TAG, "facebook:onError", error);
- // [START_EXCLUDE]
- // [END_EXCLUDE]
- }
- });
- // [END initialize_fblogin]
- final Button button = (Button) findViewById(R.id.guzik_logowania_id);
- progressDialog = new ProgressDialog(this);
- button.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- userLogin();
- }
- });
- guzik_rejestracji = (Button) findViewById(R.id.guzik_rejestracja_id);
- guzik_rejestracji.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(MainActivity.this, RegisterPanel.class);
- startActivity(intent);
- }
- });
- }
- private void handleFacebookAccessToken(AccessToken token) {
- Log.d(TAG, "handleFacebookAccessToken:" + token);
- // [START_EXCLUDE silent]
- // [END_EXCLUDE]
- AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
- firebaseAuth.signInWithCredential(credential)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if (task.isSuccessful()) {
- // Sign in success, update UI with the signed-in user's information
- Log.d(TAG, "signInWithCredential:success");
- FirebaseUser user = firebaseAuth.getCurrentUser();
- finish();
- startActivity(new Intent(getApplicationContext(), ActivityDlaZalogowanych.class));
- } else {
- // If sign in fails, display a message to the user.
- Log.w(TAG, "signInWithCredential:failure", task.getException());
- Toast.makeText(MainActivity.this, "Authentication failed.",
- Toast.LENGTH_SHORT).show();
- }
- // [START_EXCLUDE]
- // [END_EXCLUDE]
- }
- });
- }
- //method for user login
- private void userLogin(){
- EditText _email = (EditText) findViewById(R.id.input_email_id);
- EditText _password = (EditText) findViewById(R.id.input_haslo_id);
- String email = _email.getText().toString().trim();
- String password = _password.getText().toString().trim();
- //checking if email and passwords are empty
- if (_email.getText().toString().length() == 0)
- _email.setError("Email required.");
- else if (!Patterns.EMAIL_ADDRESS.matcher(_email.getText().toString()).matches()) {
- _email.setError("This is not a valid email address.");
- }
- if (_password.getText().toString().length() == 0){
- _password.setError("Password required.");
- return;
- }
- //if the email and password are not empty
- //displaying a progress dialog
- progressDialog.setMessage("Please Wait...");
- progressDialog.show();
- //logging in the user
- firebaseAuth.signInWithEmailAndPassword(email, password)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- progressDialog.dismiss();
- //if the task is successfull
- if(task.isSuccessful()){
- //start the profile activity
- finish();
- startActivity(new Intent(getApplicationContext(), ActivityDlaZalogowanych.class));
- }
- else{
- Toast.makeText(getApplicationContext(), "Błędne dane", Toast.LENGTH_LONG).show();
- }
- }
- });
- }
- public void setControls(){
- googleSignInButton = (SignInButton) findViewById(R.id.sign_in_button);
- loginFbButton=(LoginButton)findViewById(R.id.login_button_fb);
- }
- //Google Sign In methods
- private void signIn() {
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleSignInClient);
- startActivityForResult(signInIntent, RC_SIGN_IN);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
- if (requestCode == RC_SIGN_IN) {
- GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- if(result.isSuccess()) {
- //get google account
- GoogleSignInAccount account = result.getSignInAccount();
- firebaseAuthWithGoogle(account);
- } else {
- Toast.makeText(getApplicationContext(), getString(R.string.authGoWrong), Toast.LENGTH_LONG).show();
- }
- }else
- mCallbackManager.onActivityResult(requestCode, resultCode, data);
- }
- private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
- AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
- firebaseAuth.signInWithCredential(credential)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if (task.isSuccessful()) {
- // Sign in success, update UI with the signed-in user's information
- Log.d("TAG", "signInWithCredential:success");
- FirebaseUser user = firebaseAuth.getCurrentUser();
- //updateUI(user);
- } else {
- // If sign in fails, display a message to the user.
- Log.w("TAG", "signInWithCredential:failure", task.getException());
- Toast.makeText(MainActivity.this, getString(R.string.authGoWrong),
- Toast.LENGTH_SHORT).show();
- // updateUI(null);
- }
- // ...
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement