com.facebook.AccessToken

Here are the examples of the java api com.facebook.AccessToken taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

67 Examples 7

19 Source : SessionManager.java
with Apache License 2.0
from WassimBenltaief

/**
 * Check if user is loggedIn
 * @return true id accessToken is not expired, false otherwise.
 */
public boolean isLoggedIn() {
    AccessToken accessToken = getAccessToken();
    return accessToken != null && !accessToken.isExpired();
}

19 Source : LoginActivity.java
with Apache License 2.0
from OmarAliSaid

// [START auth_with_facebook]
private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.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");
                updateUI(mAuth.getCurrentUser());
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithCredential:failure", task.getException());
                Toast.makeText(LoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

19 Source : FacebookToken.java
with Apache License 2.0
from NFLeo

public clreplaced FacebookToken extends BaseToken {

    private String userId;

    private String applicationId;

    private Date lastRefresh;

    private Date dataAccessExpirationTime;

    private AccessToken mAccessToken;

    public FacebookToken(AccessToken token) {
        setAccessTokenBean(token);
        setAccessToken(token.getToken());
        setOpenid(token.getUserId());
        setUserId(token.getUserId());
        setApplicationId(token.getApplicationId());
        setLastRefresh(token.getLastRefresh());
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getApplicationId() {
        return applicationId;
    }

    public void setApplicationId(String applicationId) {
        this.applicationId = applicationId;
    }

    public Date getLastRefresh() {
        return lastRefresh;
    }

    public void setLastRefresh(Date lastRefresh) {
        this.lastRefresh = lastRefresh;
    }

    public Date getDataAccessExpirationTime() {
        return dataAccessExpirationTime;
    }

    public void setDataAccessExpirationTime(Date dataAccessExpirationTime) {
        this.dataAccessExpirationTime = dataAccessExpirationTime;
    }

    public AccessToken getAccessTokenBean() {
        return mAccessToken;
    }

    public void setAccessTokenBean(AccessToken accessToken) {
        mAccessToken = accessToken;
    }

    @Override
    public String toString() {
        return "FaceBookToken{" + "userId='" + userId + '\'' + ", applicationId='" + applicationId + '\'' + ", lastRefresh=" + lastRefresh + ", dataAccessExpirationTime=" + dataAccessExpirationTime + '}';
    }
}

19 Source : FacebookToken.java
with Apache License 2.0
from NFLeo

public void setAccessTokenBean(AccessToken accessToken) {
    mAccessToken = accessToken;
}

19 Source : FacebookSignupProvider.java
with Apache License 2.0
from moldedbits

@Override
public void onSuccess(AccessToken token) {
    super.onSuccess(token);
}

19 Source : FacebookOnBoardingProvider.java
with Apache License 2.0
from moldedbits

@Override
public void onSuccess(AccessToken token) {
    if (resultListener != null) {
        resultListener.onSuccess(ArgusState.SIGNED_IN);
    }
}

19 Source : FacebookNetwork.java
with MIT License
from maksim88

@Override
public com.maksim88.easylogin.AccessToken getAccessToken() {
    if (com.facebook.AccessToken.getCurrentAccessToken() != null && accessToken == null) {
        AccessToken facebookToken = AccessToken.getCurrentAccessToken();
        accessToken = new com.maksim88.easylogin.AccessToken.Builder(facebookToken.getToken()).userId(facebookToken.getUserId()).build();
    }
    return accessToken;
}

19 Source : FirebaseHelper.java
with MIT License
from IramML

public void registerByFacebookAccount() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {

        @Override
        public void onCompleted(JSONObject object, GraphResponse response) {
            final String name = object.optString("name");
            final String id = object.optString("id");
            final String email = object.optString("email");
            final User user = new User();
            users.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    User post = dataSnapshot.child(id).getValue(User.clreplaced);
                    if (post == null)
                        showRegisterPhone(user, id, name, email);
                    else
                        loginSuccess();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            });
        }
    });
    request.executeAsync();
}

19 Source : FacebookLoginActivity.java
with Apache License 2.0
from firebase

// [END on_activity_result]
// [START auth_with_facebook]
private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.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 = mAuth.getCurrentUser();
                updateUI(user);
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithCredential:failure", task.getException());
                Toast.makeText(FacebookLoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                updateUI(null);
            }
        }
    });
}

19 Source : LoginResult.java
with Apache License 2.0
from eviltnan

/**
 * This clreplaced shows the results of a login operation.
 */
public clreplaced LoginResult {

    private final AccessToken accessToken;

    private final Set<String> recentlyGrantedPermissions;

    private final Set<String> recentlyDeniedPermissions;

    /**
     * The constructor.
     *
     * @param accessToken                The new access token.
     * @param recentlyGrantedPermissions The recently granted permissions.
     * @param recentlyDeniedPermissions  The recently denied permissions.
     */
    public LoginResult(AccessToken accessToken, Set<String> recentlyGrantedPermissions, Set<String> recentlyDeniedPermissions) {
        this.accessToken = accessToken;
        this.recentlyGrantedPermissions = recentlyGrantedPermissions;
        this.recentlyDeniedPermissions = recentlyDeniedPermissions;
    }

    /**
     * Getter for the new access token.
     * @return the new access token.
     */
    public AccessToken getAccessToken() {
        return accessToken;
    }

    /**
     * Getter for the recently granted permissions.
     * @return the recently granted permissions.
     */
    public Set<String> getRecentlyGrantedPermissions() {
        return recentlyGrantedPermissions;
    }

    /**
     * Getter for the recently denied permissions.
     * @return the recently denied permissions.
     */
    public Set<String> getRecentlyDeniedPermissions() {
        return recentlyDeniedPermissions;
    }
}

19 Source : LoginManager.java
with Apache License 2.0
from eviltnan

static LoginResult computeLoginResult(final LoginClient.Request request, final AccessToken newToken) {
    Set<String> requestedPermissions = request.getPermissions();
    Set<String> grantedPermissions = new HashSet<String>(newToken.getPermissions());
    // If it's a reauth, subset the granted permissions to just the requested permissions
    // so we don't report implicit permissions like user_profile as recently granted.
    if (request.isRerequest()) {
        grantedPermissions.retainAll(requestedPermissions);
    }
    Set<String> deniedPermissions = new HashSet<String>(requestedPermissions);
    deniedPermissions.removeAll(grantedPermissions);
    return new LoginResult(newToken, grantedPermissions, deniedPermissions);
}

19 Source : LoginClient.java
with Apache License 2.0
from eviltnan

private static AccessToken createFromTokenWithRefreshedPermissions(AccessToken token, Collection<String> grantedPermissions, Collection<String> declinedPermissions) {
    return new AccessToken(token.getToken(), token.getApplicationId(), token.getUserId(), grantedPermissions, declinedPermissions, token.getSource(), token.getExpires(), token.getLastRefresh());
}

19 Source : LoginClient.java
with Apache License 2.0
from eviltnan

void validateSameFbidAndFinish(Result pendingResult) {
    if (pendingResult.token == null) {
        throw new FacebookException("Can't validate without a token");
    }
    AccessToken previousToken = AccessToken.getCurrentAccessToken();
    AccessToken newToken = pendingResult.token;
    try {
        Result result = null;
        if (previousToken != null && newToken != null && previousToken.getUserId().equals(newToken.getUserId())) {
            result = Result.createTokenResult(pendingRequest, pendingResult.token);
        } else {
            result = Result.createErrorResult(pendingRequest, "User logged in as different Facebook user.", null);
        }
        complete(result);
    } catch (Exception ex) {
        complete(Result.createErrorResult(pendingRequest, "Caught exception", ex.getMessage()));
    }
}

19 Source : LoginPresenter.java
with Apache License 2.0
from derohimat

void handleFacebookAccessToken(AccessToken token) {
    mView.showProgress();
    Timber.d("handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener((Activity) mContext, task -> {
        mView.hideProgress();
        Timber.d("signInWithCredential:onComplete:" + task.isSuccessful());
        if (!task.isSuccessful()) {
            Timber.w("signInWithFbCredential", task.getException());
            mEventBus.post(new LoginEvent(false, "Fb Auth Failed : " + task.getException().getMessage()));
        } else {
            Timber.w("signInWithFbCredential", "success with email " + task.getResult().getUser().getEmail());
            mEventBus.post(new LoginEvent(true, "Fb Auth Success"));
        }
    });
}

19 Source : FacebookProviderHandler.java
with MIT License
from baumblatt

@Override
public boolean isAuthenticated() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    return accessToken != null && !accessToken.isExpired();
}

19 Source : FacebookProviderHandler.java
with MIT License
from baumblatt

private void handleFacebookAccessToken(AccessToken token) {
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    this.plugin.handleAuthCredentials(credential);
}

19 Source : FacebookProviderHandler.java
with MIT License
from baumblatt

@Override
public void fillResult(AuthCredential credential, JSObject jsResult) {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken != null && !accessToken.isExpired()) {
        jsResult.put("idToken", accessToken.getToken());
    }
}

19 Source : FacebookSdkWrapper.java
with Apache License 2.0
from AnywhereSoftware

private void handleFacebookAccessToken(AccessToken token) {
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    BA.Log("signInWithCredential start");
    auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(Task<AuthResult> arg0) {
            BA.Log("signInWithCredential complete: " + arg0.isSuccessful());
            if (arg0.isSuccessful() == false)
                BA.Log("error: " + arg0.getException());
        }
    });
}

19 Source : MainActivity.java
with GNU General Public License v3.0
from anshulkhattar

private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    // sign with credential which create from firebase auth
    mAuth.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 = mAuth.getCurrentUser();
                btnFacebook.setEnabled(true);
                updateUI(user);
            } 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();
                btnFacebook.setEnabled(true);
                updateUI(null);
            }
        // ...
        }
    });
}

18 Source : RequestAction.java
with Apache License 2.0
from WassimBenltaief

protected void execute() {
    if (sessionManager.isLoggedIn()) {
        AccessToken accessToken = sessionManager.getAccessToken();
        Bundle bundle = updateAppSecretProof();
        GraphRequest request = new GraphRequest(accessToken, getGraphPath(), bundle, HttpMethod.GET);
        request.setVersion(configuration.getGraphVersion());
        runRequest(request);
    } else {
        String reason = Errors.getError(Errors.ErrorMsg.LOGIN);
        Logger.logError(getClreplaced(), reason, null);
        if (mSingleEmitter != null) {
            mSingleEmitter.onError(new FacebookAuthorizationException(reason));
        }
    }
}

18 Source : LoginActivity.java
with MIT License
from vishalroygeek

private void handleFacebookAccessToken(AccessToken token) {
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                saveUserDetails(mAuth.getCurrentUser().getDisplayName(), mAuth.getCurrentUser().getPhotoUrl().toString());
            } else {
                if (task.getException().toString().contains("already exists with the same email address")) {
                    buttonsState(true);
                    Toast.makeText(LoginActivity.this, "Account with same Facebook email already exists !", Toast.LENGTH_LONG).show();
                } else {
                    buttonsState(true);
                    Toast.makeText(LoginActivity.this, "Unable to Login !", Toast.LENGTH_LONG).show();
                }
            }
        }
    });
}

18 Source : SignInActivity.java
with GNU General Public License v3.0
from TudorCretu

public clreplaced SignInActivity extends BaseActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {

    public FirebaseAuth mAuth;

    public FirebaseUser mUser;

    public FirebaseAuth.AuthStateListener mAuthListener;

    private static final int RC_SIGN_IN = 9001;

    private GoogleApiClient mGoogleApiClient;

    private static final String TAG = "TAG";

    private TwitterLoginButton mLoginButton;

    private CallbackManager mCallbackManager;

    private static final String Facebook_TAG = "FacebookActivity";

    public AccessToken mAccessToken;

    public Intent goMain;

    @Override
    public void onBackPressed() {
        // disable going back to the MainActivity
        moveTaskToBack(true);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        goMain = new Intent(this, MainActivity.clreplaced);
        // Configure Twitter SDK
        TwitterAuthConfig authConfig = new TwitterAuthConfig(getString(R.string.twitter_consumer_key), getString(R.string.twitter_consumer_secret));
        Fabric.with(this, new Twitter(authConfig));
        setContentView(R.layout.activity_signin);
        mAuth = FirebaseAuth.getInstance();
        setGooglePlusButtonText((SignInButton) findViewById(R.id.google_login_button), "Log in with Google");
        // Button listeners
        findViewById(R.id.google_login_button).setOnClickListener(this);
        // [START config_signin]
        // Configure Google Sign In
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).requestEmail().requestProfile().build();
        // [END config_signin]
        mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, /* FragmentActivity */
        this).addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();
        // [START initialize_twitter_login]
        mLoginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
        mLoginButton.setCallback(new Callback<TwitterSession>() {

            @Override
            public void success(Result<TwitterSession> result) {
                Log.d(TAG, "twitterLogin:success" + result);
                handleTwitterSession(result.data);
            }

            @Override
            public void failure(TwitterException exception) {
                Log.w(TAG, "twitterLogin:failure", exception);
            }
        });
        // [END initialize_twitter_login]
        mCallbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton) findViewById(R.id.facebook_login_button);
        loginButton.setReadPermissions("email", "public_profile");
        loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                mAuth = FirebaseAuth.getInstance();
                Log.w(Facebook_TAG, "mAuth is:" + mAuth);
                mUser = mAuth.getCurrentUser();
                Log.w(Facebook_TAG, "mUser is:" + mUser);
                mAccessToken = loginResult.getAccessToken();
                Log.w(Facebook_TAG, "AccessToken is:" + mAccessToken);
                Log.w(Facebook_TAG, " loginResult is:" + loginResult);
                Log.w(Facebook_TAG, "Here is the handle Facebook Access token");
                handleFacebookAccessToken(loginResult.getAccessToken());
            }

            @Override
            public void onCancel() {
                Log.w(Facebook_TAG, "here is onCancer");
            }

            @Override
            public void onError(FacebookException error) {
                Log.w(Facebook_TAG, "Here is onError");
            }
        });
        LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.w(Facebook_TAG, "Here is onSuccess in login manager");
                mAuth = FirebaseAuth.getInstance();
                Log.w(Facebook_TAG, "mAuth is:" + mAuth);
                mUser = mAuth.getCurrentUser();
                Log.w(Facebook_TAG, "mUser is:" + mUser);
                mAccessToken = loginResult.getAccessToken();
                Log.w(Facebook_TAG, "AccessToken is:" + mAccessToken);
                Log.w(Facebook_TAG, " loginResult is:" + loginResult);
                Log.w(Facebook_TAG, "Here is the handle Facebook Access token");
                handleFacebookAccessToken(loginResult.getAccessToken());
            }

            @Override
            public void onCancel() {
                Log.w(Facebook_TAG, "Here is oncancer in login manager");
            }

            @Override
            public void onError(FacebookException exception) {
                Log.w(Facebook_TAG, "Here is onerror in login manager");
            }
        });
    }

    // [START on_start_check_user]
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        mUser = mAuth.getCurrentUser();
        mAuthListener = new FirebaseAuth.AuthStateListener() {

            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth mAuth) {
                mUser = mAuth.getCurrentUser();
                if (mUser != null) {
                    startActivity(goMain);
                } else {
                }
            }
        };
        mAuth.addAuthStateListener(mAuthListener);
    }

    // [END on_start_check_user]
    @Override
    public void onResume() {
        super.onResume();
        mUser = mAuth.getCurrentUser();
        if (mUser != null) {
            startActivity(goMain);
        }
    }

    // [END onactivityresult]
    // [START auth_with_google]
    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
        Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
        // [START_EXCLUDE silent]
        showProgressDialog();
        // [END_EXCLUDE]
        AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mAuth.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");
                    mUser = mAuth.getCurrentUser();
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithCredential:failure", task.getException());
                    Toast.makeText(SignInActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                }
                // [START_EXCLUDE]
                hideProgressDialog();
            // [END_EXCLUDE]
            }
        });
    }

    // [END auth_with_google]
    // [START signin]
    private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    // [END signin]
    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        // An unresolvable error has occurred and Google APIs (including Sign-In) will not
        // be available.
        Log.d(TAG, "onConnectionFailed:" + connectionResult);
        Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(View v) {
        int i = v.getId();
        if (i == R.id.google_login_button) {
            signIn();
        } else if (i == R.id.EmailPreplacedword_login_button) {
            startActivity(new Intent(SignInActivity.this, EmailPreplacedwordActivity.clreplaced));
        }
    }

    // End google
    // Start Twitter
    // [START auth_with_twitter]
    private void handleTwitterSession(TwitterSession session) {
        Log.d(TAG, "handleTwitterSession:" + session);
        // [START_EXCLUDE silent]
        showProgressDialog();
        // [END_EXCLUDE]
        AuthCredential credential = TwitterAuthProvider.getCredential(session.getAuthToken().token, session.getAuthToken().secret);
        mAuth.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 = mAuth.getCurrentUser();
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithCredential:failure", task.getException());
                    Toast.makeText(SignInActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                }
                // [START_EXCLUDE]
                hideProgressDialog();
            // [END_EXCLUDE]
            }
        });
    }

    // [END auth_with_twitter]
    // End Twitter
    // Start Facebook
    private void handleFacebookAccessToken(AccessToken token) {
        Log.d(Facebook_TAG, "handleFacebookAccessToken:" + token);
        AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
        mAuth.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.w(Facebook_TAG, "signInWithCredential:success");
                    mUser = mAuth.getCurrentUser();
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(Facebook_TAG, "signInWithCredential:failure", task.getException());
                    Toast.makeText(SignInActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    // End Facebook
    // [START onactivityresult]
    @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()) {
                // Google Sign In was successful, authenticate with Firebase
                GoogleSignInAccount account = result.getSignInAccount();
                firebaseAuthWithGoogle(account);
            } else {
            // Google Sign In failed, update UI appropriately
            // [START_EXCLUDE]
            // [END_EXCLUDE]
            }
        } else if (requestCode == TwitterAuthConfig.DEFAULT_AUTH_REQUEST_CODE) {
            mLoginButton.onActivityResult(requestCode, resultCode, data);
        } else if (requestCode == CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode()) {
            Log.w(Facebook_TAG, "Here it is the callbackManager");
            // Preplaced the activity result back to the Facebook SDK
            mCallbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }

    protected void setGooglePlusButtonText(SignInButton signInButton, String buttonText) {
        // Find the TextView that is inside of the SignInButton and set its text
        for (int i = 0; i < signInButton.getChildCount(); i++) {
            View v = signInButton.getChildAt(i);
            if (v instanceof TextView) {
                TextView tv = (TextView) v;
                tv.setText(buttonText);
                tv.setTextSize(18);
                return;
            }
        }
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        LoginButton loginButton = (LoginButton) findViewById(R.id.facebook_login_button);
        float fbIconScale = 1.55F;
        Drawable drawable = getResources().getDrawable(com.facebook.R.drawable.com_facebook_button_icon);
        drawable.setBounds(0, 0, (int) (drawable.getIntrinsicWidth() * fbIconScale), (int) (drawable.getIntrinsicHeight() * fbIconScale));
        loginButton.setCompoundDrawables(drawable, null, null, null);
        loginButton.setCompoundDrawablePadding(getResources().getDimensionPixelSize(R.dimen.text_margin));
    }
}

18 Source : SignInActivity.java
with GNU General Public License v3.0
from TudorCretu

// [END auth_with_twitter]
// End Twitter
// Start Facebook
private void handleFacebookAccessToken(AccessToken token) {
    Log.d(Facebook_TAG, "handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.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.w(Facebook_TAG, "signInWithCredential:success");
                mUser = mAuth.getCurrentUser();
            } else {
                // If sign in fails, display a message to the user.
                Log.w(Facebook_TAG, "signInWithCredential:failure", task.getException());
                Toast.makeText(SignInActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

18 Source : FBAccessTokenModule.java
with MIT License
from thebergamo

/**
 * Set {@link AccessToken} for the current session.
 * @param accessTokenMap must satisfy the requirements in
 *                       <a href="https://developers.facebook.com/docs/reference/android/current/clreplaced/AccessToken/">
 *                       Facebook AccessToken</a>
 */
@ReactMethod
public void setCurrentAccessToken(ReadableMap accessTokenMap) {
    AccessToken accessToken = Utility.buildAccessToken(accessTokenMap);
    AccessToken.setCurrentAccessToken(accessToken);
}

18 Source : Welcome.java
with MIT License
from plazzy99

// AccessToken accessToken = AccessToken.getCurrentAccessToken();
// boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
private void handlerFacebookToken(AccessToken loginResult) {
    Log.d("Facebok", "" + loginResult);
    AuthCredential credential = FacebookAuthProvider.getCredential(loginResult.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                // Login Successful
                Log.w("facebook", "Log in successful");
                startActivity(new Intent(getApplicationContext(), HomeActivity.clreplaced));
            } else {
                Log.w("Facebook", "login in failed " + task.getException());
            }
        }
    });
}

18 Source : FacebookNetwork.java
with MIT License
from maksim88

private void addEmailToToken(final AccessToken fbAccessToken) {
    GraphRequest meRequest = GraphRequest.newMeRequest(fbAccessToken, new GraphRequest.GraphJSONObjectCallback() {

        @Override
        public void onCompleted(JSONObject me, GraphResponse response) {
            final String token = fbAccessToken.getToken();
            final String userId = fbAccessToken.getUserId();
            if (response.getError() != null) {
                Log.d("FacebookNetwork", "Error occurred while fetching Facebook email");
                accessToken = new com.maksim88.easylogin.AccessToken.Builder(token).userId(userId).build();
                listener.onLoginSuccess(getNetwork());
            } else {
                final String email = me.optString(EMAIL_PERMISSION_FIELD);
                final String name = me.optString(NAME_FIELD);
                if (TextUtils.isEmpty(email)) {
                    Log.d("FacebookNetwork", "Email could not be fetched. The user might not have an email or have unchecked the checkbox while connecting.");
                }
                accessToken = new com.maksim88.easylogin.AccessToken.Builder(token).userId(userId).email(email).userName(name).build();
                listener.onLoginSuccess(getNetwork());
            }
        }
    });
    Bundle parameters = new Bundle();
    parameters.putString("fields", NAME_FIELD + "," + EMAIL_PERMISSION_FIELD);
    meRequest.setParameters(parameters);
    meRequest.executeAsync();
}

18 Source : LoginActivity.java
with MIT License
from im-minion

private void signInWithFacebook(AccessToken token) {
    Log.d(TAG, "signInWithFacebook:" + token.getToken());
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    final String tokenString = token.getToken();
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
            // 
            // startActivity(new Intent(SignUp09.this, Dashboard.clreplaced));
            // 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()) {
                Log.w(TAG, "signInWithCredential", task.getException());
                Toast.makeText(LoginActivity.this, "Sorry for inconvenience,Please try again..", Toast.LENGTH_SHORT).show();
            } else {
                // signInFacebook(tokenString);
                Toast.makeText(LoginActivity.this, "Welcome..!", Toast.LENGTH_SHORT).show();
                checkUserExist();
            }
        }
    });
}

18 Source : FacebookSignIn.java
with Apache License 2.0
from FrogSquare

public void revokePermission(final String permission) {
    AccessToken token = AccessToken.getCurrentAccessToken();
    String uri = "me/permissions/" + permission;
    GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, uri, new GraphRequest.Callback() {

        @Override
        public void onCompleted(GraphResponse response) {
            FacebookRequestError error = response.getError();
            if (error == null) {
                Utils.d("GodotFireBase", "FB:Revoke:Response:" + response.toString());
                getPermissions();
            }
        }
    });
    graphRequest.executeAsync();
}

18 Source : FacebookSignIn.java
with Apache License 2.0
from FrogSquare

/**
 * GraphRequest *
 */
/**
 * 	public void newRequest(final String uri, final String data) {
 *
 * 	}
 *
 * 	public void newPostRequest(final String uri, final String data) {
 * 		AccessToken token = AccessToken.getCurrentAccessToken();
 *
 * 		GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(
 * 		token, uri, new GraphRequest.Callback() {
 * 			@Override
 * 			public void onCompleted(GraphResponse response) {
 * 				Utils.d("GodotFireBase", "Revoke Permission: " + permission);
 * 			}
 * 		});
 *
 * 		graphRequest.executeAsync();
 * 	}
 *
 * 	public void newDeleteRequest(final String uri, final String data) {
 *
 * 	}
 */
/**
 * GraphRequest *
 */
public void revokeAccess() {
    mAuth.signOut();
    AccessToken token = AccessToken.getCurrentAccessToken();
    GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, "me/permissions", new GraphRequest.Callback() {

        @Override
        public void onCompleted(GraphResponse response) {
            FacebookRequestError error = response.getError();
            if (error == null) {
                Utils.d("GodotFireBase", "FB:Delete:Access" + response.toString());
            }
        }
    });
    graphRequest.executeAsync();
}

18 Source : ShareApi.java
with Apache License 2.0
from eviltnan

/**
 * Returns true if the content can be shared. Warns if the access token is missing the
 * publish_actions permission. Doesn't fail when this permission is missing, because the app
 * could have been granted that permission in another installation.
 *
 * @return true if the content can be shared.
 */
public boolean canShare() {
    if (this.getShareContent() == null) {
        return false;
    }
    final AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken == null) {
        return false;
    }
    final Set<String> permissions = accessToken.getPermissions();
    if (permissions == null || !permissions.contains("publish_actions")) {
        Log.w(TAG, "The publish_actions permissions are missing, the share will fail unless" + " this app was authorized to publish in another installation.");
    }
    return true;
}

18 Source : LoginManager.java
with Apache License 2.0
from eviltnan

private void finishLogin(AccessToken newToken, LoginClient.Request origRequest, FacebookException exception, boolean isCanceled, FacebookCallback<LoginResult> callback) {
    if (newToken != null) {
        AccessToken.setCurrentAccessToken(newToken);
        Profile.fetchProfileForCurrentAccessToken();
    }
    if (callback != null) {
        LoginResult loginResult = newToken != null ? computeLoginResult(origRequest, newToken) : null;
        // If there are no granted permissions, the operation is treated as cancel.
        if (isCanceled || (loginResult != null && loginResult.getRecentlyGrantedPermissions().size() == 0)) {
            callback.onCancel();
        } else if (exception != null) {
            callback.onError(exception);
        } else if (newToken != null) {
            callback.onSuccess(loginResult);
        }
    }
}

18 Source : LoginManager.java
with Apache License 2.0
from eviltnan

private LoginClient.Request createLoginRequestFromResponse(final GraphResponse response) {
    Validate.notNull(response, "response");
    AccessToken failedToken = response.getRequest().getAccessToken();
    return createLoginRequest(failedToken != null ? failedToken.getPermissions() : null);
}

18 Source : GodotFacebook.java
with MIT License
from DrMoriarty

public boolean isLoggedIn() {
    Log.i("godot", "Facebook isLoggedIn");
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken == null || accessToken.isExpired()) {
        // GodotLib.calldeferred(facebookCallbackId, "login_failed", new Object[]{"No token"});
        return false;
    } else {
        // GodotLib.calldeferred(facebookCallbackId, "login_success", new Object[]{accessToken.getToken()});
        return true;
    }
}

18 Source : FacebookHelper.java
with Apache License 2.0
from davideas

/*
     * =================
     * Account info
     * =================
     */
/**
 * Is logged in boolean.
 *
 * @return the boolean result of if the user is currently connected
 */
public boolean isLoggedIn() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    return accessToken != null;
}

18 Source : LoginActivity.java
with Mozilla Public License 2.0
from clementf2b

private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    final AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Log.d(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()) {
                Log.w(TAG, "signInWithCredential", task.getException());
                Snackbar snackbar = Snackbar.make(activity_login_layout, "Authentication failed.", Snackbar.LENGTH_SHORT);
                snackbar.show();
            } else {
                Snackbar snackbar = Snackbar.make(activity_login_layout, "Login successfully", Snackbar.LENGTH_SHORT);
                snackbar.show();
                mProgress.dismiss();
                checkUserExist();
            }
        }
    }).addOnFailureListener(new OnFailureListener() {

        @Override
        public void onFailure(@NonNull Exception e) {
            mProgress.dismiss();
            Snackbar snackbar = Snackbar.make(activity_login_layout, e.toString(), Snackbar.LENGTH_SHORT);
            snackbar.show();
        }
    });
}

17 Source : FacebookAuthClient.java
with MIT License
from rohjk

public clreplaced FacebookAuthClient extends AuthClient {

    private static String TAG = "[FacebookAuthClient]";

    private static int FACEBOOK_SDK_BASE_ERROR = -130;

    private static int FACEBOOK_SDK_GRAPH_ERROR = FACEBOOK_SDK_BASE_ERROR - 1;

    private static final String PERMISSIONS_PUBLIC_PROFILE = "public_profile";

    private static final String PERMISSIONS_EMAIL = "email";

    private static List<String> PERMISSIONS = new ArrayList();

    static {
        PERMISSIONS.add(PERMISSIONS_PUBLIC_PROFILE);
        PERMISSIONS.add(PERMISSIONS_EMAIL);
    }

    private CallbackManager _callbackManager;

    private SimpleAuthResultCallback<Void> loginCallback;

    private AccessToken _accessToken;

    private String _userEmail;

    @Override
    @SuppressWarnings("deprecation")
    public void login(@NonNull final Activity activity, @NonNull final SimpleAuthResultCallback<Void> callback) {
        facebookInit(activity, new SimpleAuthResultCallback<Void>() {

            @Override
            public void onResult(SimpleAuthResult<Void> facebookInitResult) {
                if (facebookInitResult.isSuccess()) {
                    _accessToken = AccessToken.getCurrentAccessToken();
                    if (_accessToken != null) {
                        // 앱실행 후, Facebook SDK 초기화를 처음 실행하면 Working Thread에서 작업이 수행됨
                        // Login API를 호출한 곳에서 UI 변경을 할 수 없음
                        // UI 변경이 가능하도록 하기위해 메인 쓰레드에서 callback을 invoke 한다
                        activity.runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                requestUserInfo(callback);
                            }
                        });
                    } else {
                        loginCallback = callback;
                        _callbackManager = CallbackManager.Factory.create();
                        LoginManager.getInstance().logInWithReadPermissions(activity, PERMISSIONS);
                        LoginManager.getInstance().registerCallback(_callbackManager, new FacebookCallback<LoginResult>() {

                            @Override
                            public void onSuccess(LoginResult loginResult) {
                                _accessToken = loginResult.getAccessToken();
                                requestUserInfo(callback);
                            }

                            @Override
                            public void onCancel() {
                                callback.onResult(SimpleAuthResult.<Void>getFailResult(AUTH_CLIENT_USER_CANCELLED_ERROR, AUTH_CLIENT_USER_CANCELLED_ERROR_MESSAGE));
                            }

                            @Override
                            public void onError(FacebookException facebookError) {
                                facebookError.printStackTrace();
                                callback.onResult(SimpleAuthResult.<Void>getFailResult(AUTH_CLIENT_LOGIN_ERROR, "FACEBOOK_LOGIN_FAIL"));
                            }
                        });
                    }
                } else {
                    callback.onResult(facebookInitResult);
                }
            }
        });
    }

    @SuppressWarnings("deprecation")
    private void facebookInit(final Activity mActivity, final SimpleAuthResultCallback<Void> callback) {
        if (SimpleAuthprovider.getInstance().getServerId(IdpType.FACEBOOK) == null) {
            callback.onResult(SimpleAuthResult.<Void>getFailResult(AUTH_CLIENT_PROVIDER_ERROR, "SERVER_ID_NULL"));
        } else {
            FacebookSdk.setApplicationId(SimpleAuthprovider.getInstance().getServerId(IdpType.FACEBOOK));
            try {
                FacebookSdk.sdkInitialize(mActivity, new FacebookSdk.InitializeCallback() {

                    @Override
                    public void onInitialized() {
                        callback.onResult(SimpleAuthResult.<Void>getSuccessResult(null));
                    }
                });
            } catch (Exception ex) {
                Log.i(TAG, "Failed to auto initialize the Facebook SDK", ex);
                callback.onResult(SimpleAuthResult.<Void>getFailResult(AUTH_CLIENT_INIT_ERROR, "FAIL_TO_INIT_FACEBOOK_CLIENT"));
            }
        }
    }

    private void requestUserInfo(final SimpleAuthResultCallback<Void> callback) {
        GraphRequest graphRequest = GraphRequest.newMeRequest(_accessToken, new GraphRequest.GraphJSONObjectCallback() {

            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                if (response.getError() == null) {
                    // Success
                    try {
                        _userEmail = object.getString("email");
                        callback.onResult(SimpleAuthResult.<Void>getSuccessResult(null));
                    } catch (Exception e) {
                        e.printStackTrace();
                        callback.onResult(SimpleAuthResult.<Void>getFailResult(FACEBOOK_SDK_BASE_ERROR, "GRAPH_REQUEST_PARSE_ERROR"));
                    }
                } else {
                    // Fail
                    callback.onResult(SimpleAuthResult.<Void>getFailResult(FACEBOOK_SDK_GRAPH_ERROR, "REQUEST_GRAPH_ERROR"));
                }
            }
        });
        Bundle parameters = new Bundle();
        parameters.putString("fields", PERMISSIONS_EMAIL);
        graphRequest.setParameters(parameters);
        graphRequest.executeAsync();
    }

    @Override
    public void logout() {
        LoginManager.getInstance().logOut();
        clear();
    }

    private void clear() {
        _accessToken = null;
        _userEmail = null;
    }

    @Override
    public String getToken() {
        return (_accessToken != null) ? _accessToken.getToken() : "";
    }

    @Override
    public String getEmail() {
        return (_userEmail != null) ? _userEmail : "";
    }

    @Override
    public IdpType getIdpType() {
        return IdpType.FACEBOOK;
    }

    @Override
    public boolean isSignedIn(@NonNull Activity activity) {
        return _accessToken != null;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (_callbackManager != null)
            _callbackManager.onActivityResult(requestCode, resultCode, data);
    }
}

17 Source : SignInBaseActivity.java
with MIT License
from PacktPublishing

private void handleFacebookAccessToken(final AccessToken token) {
    MyLg.d("KOI", "handleFacebookAccessToken:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener((Activity) context, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            MyLg.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
        }
    });
}

17 Source : ConnectPlugin.java
with Apache License 2.0
from NewSchoolApp

/**
 * Create a Facebook Response object that matches the one for the Javascript SDK
 * @return JSONObject - the response object
 */
public JSONObject getResponse() {
    String response;
    final AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (hasAccessToken()) {
        Date today = new Date();
        long expiresTimeInterval = (accessToken.getExpires().getTime() - today.getTime()) / 1000L;
        response = "{" + "\"status\": \"connected\"," + "\"authResponse\": {" + "\"accessToken\": \"" + accessToken.getToken() + "\"," + "\"expiresIn\": \"" + Math.max(expiresTimeInterval, 0) + "\"," + "\"session_key\": true," + "\"sig\": \"...\"," + "\"userID\": \"" + accessToken.getUserId() + "\"" + "}" + "}";
    } else {
        response = "{" + "\"status\": \"unknown\"" + "}";
    }
    try {
        return new JSONObject(response);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return new JSONObject();
}

17 Source : FacebookHelper.java
with Apache License 2.0
from moldedbits

public clreplaced FacebookHelper {

    private List<String> facebookPermissions;

    public interface FBLoginResultListener {

        void onSuccess(AccessToken token);

        void onFailure(String message);
    }

    private AccessToken token;

    private CallbackManager callbackManager;

    private FBLoginResultListener resultListener;

    public FacebookHelper(FBLoginResultListener resultListener) {
        this.resultListener = resultListener;
        callbackManager = CallbackManager.Factory.create();
    }

    public void initialize() {
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {

                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        token = AccessToken.getCurrentAccessToken();
                        if (resultListener != null) {
                            resultListener.onSuccess(token);
                        }
                    }
                });
                Bundle parameters = new Bundle();
                graphRequest.setParameters(parameters);
                graphRequest.executeAsync();
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
                resultListener.onFailure(error.getMessage());
            }
        });
    }

    public void logout() {
        if (AccessToken.getCurrentAccessToken() == null) {
            return;
        // already logged out
        }
        new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() {

            @Override
            public void onCompleted(GraphResponse graphResponse) {
                LoginManager.getInstance().logOut();
            }
        }).executeAsync();
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    public void initiateLogin(Fragment fragment, List<String> faceBookPermissions) {
        this.facebookPermissions = faceBookPermissions;
        LoginManager.getInstance().logInWithReadPermissions(fragment, faceBookPermissions);
    }
}

17 Source : HomeActivity.java
with MIT License
from IramML

public clreplaced HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, GoogleMap.OnInfoWindowClickListener {

    private ImageView carUberX, carUberBlack;

    private Button btnRequestPickup;

    private Toolbar toolbar;

    private GoogleMap mMap;

    private LinearLayout llPickupInput, llDestinationInput, llPickupPlace, llDestinationPlace;

    private EditText etFinalPickup, etFinalDestination, etPickup, etDestination;

    private RecyclerView rvPickupPlaces, rvDestinationPlaces;

    private GoogleSignInAccount account;

    private SupportMapFragment mapFragment;

    private Marker riderMarket, destinationMarker;

    private ArrayList<Marker> driverMarkers = new ArrayList<>();

    // Gooogle
    private GoogleApiClient mGoogleApiClient;

    AccessToken accessToken = AccessToken.getCurrentAccessToken();

    boolean isLoggedInFacebook = accessToken != null && !accessToken.isExpired();

    private DatabaseReference driversAvailable;

    private FirebaseStorage storage;

    private StorageReference storageReference;

    private IFCMService ifcmService;

    private Location location;

    private NetworkUtil networkUtil;

    private String mPlaceLocation, mPlaceDestination;

    private Double currentLat, currentLng;

    private boolean isUberX = false, pickupPlacesSelected = false;

    // km
    private int radius = 1, distance = 1;

    private static final int LIMIT = 3;

    private String URL_BASE_API_PLACES = "https://maps.googleapis.com/maps/api/place/textsearch/json?";

    public static boolean driverFound = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        initViews();
        verifyGoogleAccount();
        storage = FirebaseStorage.getInstance();
        storageReference = storage.getReference();
        ifcmService = Common.getFCMService();
        networkUtil = new NetworkUtil(this);
        location = new Location(this, new locationListener() {

            @Override
            public void locationResponse(LocationResult response) {
                // Add a icon_marker in Sydney and move the camera
                currentLat = response.getLastLocation().getLareplacedude();
                currentLng = response.getLastLocation().getLongitude();
                Common.currenLocation = new LatLng(response.getLastLocation().getLareplacedude(), response.getLastLocation().getLongitude());
                displayLocation();
                if (mPlaceLocation == null) {
                    driversAvailable = FirebaseDatabase.getInstance().getReference(Common.driver_tbl);
                    driversAvailable.addValueEventListener(new ValueEventListener() {

                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            loadAllAvailableDriver(new LatLng(currentLat, currentLng));
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {
                        }
                    });
                }
            }
        });
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        carUberX = findViewById(R.id.selectedUberX);
        carUberBlack = findViewById(R.id.selectedUberBlack);
        carUberX.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                boolean isToggle = !isUberX;
                isUberX = true;
                if (isToggle) {
                    carUberX.setImageResource(R.drawable.car_cui_select);
                    carUberBlack.setImageResource(R.drawable.car_vip);
                }
                loadAllAvailableDriver(new LatLng(currentLat, currentLng));
            }
        });
        carUberBlack.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                boolean isToggle = isUberX;
                isUberX = false;
                if (isToggle) {
                    carUberX.setImageResource(R.drawable.car_cui);
                    carUberBlack.setImageResource(R.drawable.car_vip_select);
                }
                loadAllAvailableDriver(new LatLng(currentLat, currentLng));
            }
        });
        btnRequestPickup = findViewById(R.id.btnPickupRequest);
        btnRequestPickup.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (currentLat != null && currentLng != null) {
                    if (!driverFound)
                        requestPickup(Common.userID);
                    else
                        Common.sendRequestToDriver(Common.driverID, ifcmService, getApplicationContext(), Common.currenLocation);
                }
            }
        });
        etFinalPickup.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override
            public void onFocusChange(View view, boolean b) {
                if (b) {
                    llPickupInput.setVisibility(View.VISIBLE);
                    llPickupPlace.setVisibility(View.GONE);
                    llDestinationInput.setVisibility(View.GONE);
                    llDestinationPlace.setVisibility(View.GONE);
                    etPickup.requestFocus();
                }
            }
        });
        etFinalDestination.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override
            public void onFocusChange(View view, boolean b) {
                if (b) {
                    llPickupInput.setVisibility(View.GONE);
                    llPickupPlace.setVisibility(View.GONE);
                    llDestinationInput.setVisibility(View.VISIBLE);
                    llDestinationPlace.setVisibility(View.GONE);
                    etDestination.requestFocus();
                }
            }
        });
        etPickup.addTextChangedListener(new Texreplacedcher() {

            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                getPlacesByString(charSequence.toString(), true);
            }

            @Override
            public void afterTextChanged(Editable editable) {
            }
        });
        etDestination.addTextChangedListener(new Texreplacedcher() {

            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                getPlacesByString(charSequence.toString(), false);
            }

            @Override
            public void afterTextChanged(Editable editable) {
            }
        });
        updateFirebaseToken();
    }

    private void initViews() {
        llPickupInput = findViewById(R.id.ll_pickup_input);
        llPickupPlace = findViewById(R.id.ll_pickup_place);
        llDestinationInput = findViewById(R.id.ll_destination_input);
        llDestinationPlace = findViewById(R.id.ll_destination_place);
        etFinalPickup = findViewById(R.id.et_final_pickup_location);
        etFinalDestination = findViewById(R.id.et_final_destination);
        etDestination = findViewById(R.id.et_destination);
        etPickup = findViewById(R.id.et_pickup);
        rvPickupPlaces = findViewById(R.id.rv_pickup_places);
        rvPickupPlaces.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        rvDestinationPlaces = findViewById(R.id.rv_destination_places);
        rvDestinationPlaces.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    public void initDrawer() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        View navigationHeaderView = navigationView.getHeaderView(0);
        TextView tvName = (TextView) navigationHeaderView.findViewById(R.id.tvRiderName);
        TextView tvStars = (TextView) findViewById(R.id.tvStars);
        CircleImageView imageAvatar = (CircleImageView) navigationHeaderView.findViewById(R.id.imgAvatar);
        tvName.setText(Common.currentUser.getName());
        if (Common.currentUser.getRates() != null && !TextUtils.isEmpty(Common.currentUser.getRates()))
            tvStars.setText(Common.currentUser.getRates());
        if (isLoggedInFacebook)
            Picreplacedo.get().load("https://graph.facebook.com/" + Common.userID + "/picture?width=500&height=500").into(imageAvatar);
        else if (account != null)
            Picreplacedo.get().load(account.getPhotoUrl()).into(imageAvatar);
        if (Common.currentUser.getAvatarUrl() != null && !TextUtils.isEmpty(Common.currentUser.getAvatarUrl()))
            Picreplacedo.get().load(Common.currentUser.getAvatarUrl()).into(imageAvatar);
    }

    private void loadUser() {
        FirebaseDatabase.getInstance().getReference(Common.user_rider_tbl).child(Common.userID).addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Common.currentUser = dataSnapshot.getValue(User.clreplaced);
                initDrawer();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }

    private void verifyGoogleAccount() {
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
        mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();
        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        if (opr.isDone()) {
            GoogleSignInResult result = opr.get();
            handleSignInResult(result);
        } else {
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {

                @Override
                public void onResult(@NonNull GoogleSignInResult googleSignInResult) {
                    handleSignInResult(googleSignInResult);
                }
            });
        }
    }

    private void updateFirebaseToken() {
        FirebaseDatabase db = FirebaseDatabase.getInstance();
        final DatabaseReference tokens = db.getReference(Common.token_tbl);
        tokens.child(FirebaseAuth.getInstance().getUid()).setValue(FirebaseInstanceId.getInstance().getToken());
    }

    private void requestPickup(String uid) {
        DatabaseReference dbRequest = FirebaseDatabase.getInstance().getReference(Common.pickup_request_tbl);
        GeoFire mGeofire = new GeoFire(dbRequest);
        mGeofire.setLocation(uid, new GeoLocation(Common.currenLocation.lareplacedude, Common.currenLocation.longitude), new GeoFire.CompletionListener() {

            @Override
            public void onComplete(String key, DatabaseError error) {
            }
        });
        if (riderMarket.isVisible())
            riderMarket.remove();
        riderMarket = mMap.addMarker(new MarkerOptions().replacedle(getResources().getString(R.string.pickup_here)).snippet("").position(new LatLng(Common.currenLocation.lareplacedude, Common.currenLocation.longitude)).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
        riderMarket.showInfoWindow();
        btnRequestPickup.setText(getResources().getString(R.string.getting_uber));
        findDriver();
    }

    private void findDriver() {
        DatabaseReference driverLocation;
        if (isUberX)
            driverLocation = FirebaseDatabase.getInstance().getReference(Common.driver_tbl).child("UberX");
        else
            driverLocation = FirebaseDatabase.getInstance().getReference(Common.driver_tbl).child("Uber Black");
        GeoFire geoFire = new GeoFire(driverLocation);
        GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(Common.currenLocation.lareplacedude, Common.currenLocation.longitude), radius);
        geoQuery.removeAllListeners();
        geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {

            @Override
            public void onKeyEntered(String key, GeoLocation location) {
                if (!driverFound) {
                    driverFound = true;
                    Common.driverID = key;
                    btnRequestPickup.setText(getApplicationContext().getResources().getString(R.string.call_driver));
                }
            }

            @Override
            public void onKeyExited(String key) {
            }

            @Override
            public void onKeyMoved(String key, GeoLocation location) {
            }

            @Override
            public void onGeoQueryReady() {
                if (!driverFound && radius < LIMIT) {
                    radius++;
                    findDriver();
                } else {
                    if (!driverFound) {
                        Toast.makeText(HomeActivity.this, "No available any driver near you", Toast.LENGTH_SHORT).show();
                        btnRequestPickup.setText("REQUEST PICKUP");
                    }
                }
            }

            @Override
            public void onGeoQueryError(DatabaseError error) {
            }
        });
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.gereplacedemId();
        switch(id) {
            case R.id.nav_trip_history:
                showTripHistory();
                break;
            case R.id.nav_updateInformation:
                showDialogUpdateInfo();
                break;
            case R.id.nav_signOut:
                signOut();
                break;
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    private void showTripHistory() {
        Intent intent = new Intent(HomeActivity.this, TripHistoryActivity.clreplaced);
        startActivity(intent);
    }

    private void showDialogUpdateInfo() {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(HomeActivity.this);
        alertDialog.setreplacedle("UPDATE INFORMATION");
        LayoutInflater inflater = this.getLayoutInflater();
        View layout_pwd = inflater.inflate(R.layout.layout_update_information, null);
        final MaterialEditText etName = (MaterialEditText) layout_pwd.findViewById(R.id.etName);
        final MaterialEditText etPhone = (MaterialEditText) layout_pwd.findViewById(R.id.etPhone);
        final ImageView image_upload = (ImageView) layout_pwd.findViewById(R.id.imageUpload);
        image_upload.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                chooseImage();
            }
        });
        alertDialog.setView(layout_pwd);
        alertDialog.setPositiveButton("UPDATE", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
                final android.app.AlertDialog waitingDialog = new SpotsDialog.Builder().setContext(HomeActivity.this).build();
                waitingDialog.show();
                String name = etName.getText().toString();
                String phone = etPhone.getText().toString();
                Map<String, Object> updateInfo = new HashMap<>();
                if (!TextUtils.isEmpty(name))
                    updateInfo.put("name", name);
                if (!TextUtils.isEmpty(phone))
                    updateInfo.put("phone", phone);
                DatabaseReference driverInformation = FirebaseDatabase.getInstance().getReference(Common.user_rider_tbl);
                driverInformation.child(Common.userID).updateChildren(updateInfo).addOnCompleteListener(new OnCompleteListener<Void>() {

                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        waitingDialog.dismiss();
                        if (task.isSuccessful())
                            Toast.makeText(HomeActivity.this, "Information Updated!", Toast.LENGTH_SHORT).show();
                        else
                            Toast.makeText(HomeActivity.this, "Information Update Failed!", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
        alertDialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        alertDialog.show();
    }

    private void chooseImage() {
        Dexter.withActivity(this).withPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE).withListener(new MultiplePermissionsListener() {

            @Override
            public void onPermissionsChecked(MultiplePermissionsReport report) {
                if (report.areAllPermissionsGranted()) {
                    Intent intent = new Intent(Intent.ACTION_PICK);
                    intent.setType("image/*");
                    startActivityForResult(intent, Common.PICK_IMAGE_REQUEST);
                } else {
                    Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
                token.continuePermissionRequest();
            }
        }).check();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Common.PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
            Uri saveUri = data.getData();
            if (saveUri != null) {
                final ProgressDialog progressDialog = new ProgressDialog(this);
                progressDialog.setMessage("Uploading...");
                progressDialog.show();
                String imageName = UUID.randomUUID().toString();
                final StorageReference imageFolder = storageReference.child("images/" + imageName);
                imageFolder.putFile(saveUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        progressDialog.dismiss();
                        Toast.makeText(HomeActivity.this, "Uploaded!", Toast.LENGTH_SHORT).show();
                        imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {

                            @Override
                            public void onSuccess(Uri uri) {
                                Map<String, Object> avatarUpdate = new HashMap<>();
                                avatarUpdate.put("avatarUrl", uri.toString());
                                DatabaseReference driverInformations = FirebaseDatabase.getInstance().getReference(Common.user_rider_tbl);
                                driverInformations.child(Common.userID).updateChildren(avatarUpdate).addOnCompleteListener(new OnCompleteListener<Void>() {

                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        if (task.isSuccessful())
                                            Toast.makeText(HomeActivity.this, "Uploaded!", Toast.LENGTH_SHORT).show();
                                        else
                                            Toast.makeText(HomeActivity.this, "Uploaded error!", Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
                        });
                    }
                }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {

                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
                        progressDialog.setMessage("Uploaded " + progress + "%");
                    }
                });
            }
        }
    }

    private void signOut() {
        if (account != null) {
            Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {

                @Override
                public void onResult(@NonNull Status status) {
                    if (status.isSuccess()) {
                        Intent intent = new Intent(HomeActivity.this, LoginActivity.clreplaced);
                        startActivity(intent);
                        finish();
                    } else {
                        Toast.makeText(HomeActivity.this, "Could not log out", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        } else if (isLoggedInFacebook) {
            LoginManager.getInstance().logOut();
            Intent intent = new Intent(HomeActivity.this, LoginActivity.clreplaced);
            startActivity(intent);
            finish();
        } else {
            FirebaseAuth.getInstance().signOut();
            Intent intent = new Intent(HomeActivity.this, LoginActivity.clreplaced);
            startActivity(intent);
            finish();
        }
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            account = result.getSignInAccount();
            Common.userID = account.getId();
            loadUser();
        } else if (isLoggedInFacebook) {
            GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {

                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    String id = object.optString("id");
                    Common.userID = id;
                    loadUser();
                }
            });
            request.executeAsync();
        } else {
            Common.userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
            loadUser();
        }
    }

    private void displayLocation() {
        if (currentLat != null && currentLng != null) {
            // presence system
            driversAvailable = FirebaseDatabase.getInstance().getReference(Common.driver_tbl);
            driversAvailable.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    // if have change from drivers table, we will reload all drivers available
                    loadAllAvailableDriver(new LatLng(currentLat, currentLng));
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
            loadAllAvailableDriver(new LatLng(currentLat, currentLng));
        } else {
            ShowMessage.messageError(this, Errors.WITHOUT_LOCATION);
        }
    }

    private void loadAllAvailableDriver(final LatLng location) {
        for (Marker driverMarker : driverMarkers) {
            driverMarker.remove();
        }
        driverMarkers.clear();
        if (!pickupPlacesSelected) {
            if (riderMarket != null)
                riderMarket.remove();
            riderMarket = mMap.addMarker(new MarkerOptions().position(location).replacedle(getResources().getString(R.string.you)).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marker)));
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 15.0f));
        }
        DatabaseReference driverLocation;
        if (isUberX)
            driverLocation = FirebaseDatabase.getInstance().getReference(Common.driver_tbl).child("UberX");
        else
            driverLocation = FirebaseDatabase.getInstance().getReference(Common.driver_tbl).child("Uber Black");
        GeoFire geoFire = new GeoFire(driverLocation);
        GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(location.lareplacedude, location.longitude), distance);
        geoQuery.removeAllListeners();
        geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {

            @Override
            public void onKeyEntered(String key, final GeoLocation location) {
                FirebaseDatabase.getInstance().getReference(Common.user_driver_tbl).child(key).addListenerForSingleValueEvent(new ValueEventListener() {

                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        User driver = dataSnapshot.getValue(User.clreplaced);
                        String name;
                        String phone;
                        if (driver.getName() != null)
                            name = driver.getName();
                        else
                            name = "not available";
                        if (driver.getPhone() != null)
                            phone = "Phone: " + driver.getPhone();
                        else
                            phone = "Phone: none";
                        driverMarkers.add(mMap.addMarker(new MarkerOptions().position(new LatLng(location.lareplacedude, location.longitude)).flat(true).replacedle(name).snippet("Driver ID: " + dataSnapshot.getKey()).icon(BitmapDescriptorFactory.fromResource(R.drawable.car))));
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                    }
                });
            }

            @Override
            public void onKeyExited(String key) {
            }

            @Override
            public void onKeyMoved(String key, GeoLocation location) {
            }

            @Override
            public void onGeoQueryReady() {
                if (distance <= LIMIT) {
                    distance++;
                    loadAllAvailableDriver(location);
                }
            }

            @Override
            public void onGeoQueryError(DatabaseError error) {
            }
        });
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.getUiSettings().setZoomControlsEnabled(true);
        mMap.getUiSettings().setZoomGesturesEnabled(true);
        mMap.setInfoWindowAdapter(new CustomInfoWindow(this));
        googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.uber_style_map));
        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

            @Override
            public void onMapClick(LatLng latLng) {
                if (destinationMarker != null)
                    destinationMarker.remove();
                destinationMarker = mMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_destination_marker)).replacedle("Destination"));
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15.0f));
                BottomSheetRiderFragment mBottomSheet = BottomSheetRiderFragment.newInstance(String.format("%f,%f", currentLat, currentLng), String.format("%f,%f", latLng.lareplacedude, latLng.longitude), true);
                mBottomSheet.show(getSupportFragmentManager(), mBottomSheet.getTag());
            }
        });
        mMap.setOnInfoWindowClickListener(this);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        location.onRequestPermissionResult(requestCode, permissions, grantResults);
    }

    @Override
    protected void onStop() {
        super.onStop();
        location.stopUpdateLocation();
    }

    @Override
    protected void onStart() {
        super.onStart();
        displayLocation();
        location.inicializeLocation();
    }

    @Override
    public void onConnected(@Nullable Bundle bundle) {
    }

    @Override
    public void onConnectionSuspended(int i) {
        mGoogleApiClient.connect();
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    }

    @Override
    public void onInfoWindowClick(Marker marker) {
        if (!marker.getreplacedle().equals("You")) {
            Intent intent = new Intent(HomeActivity.this, CallDriverActivity.clreplaced);
            String ID = marker.getSnippet().replace("Driver ID: ", "");
            intent.putExtra("driverID", ID);
            intent.putExtra("lat", currentLat);
            intent.putExtra("lng", currentLng);
            startActivity(intent);
        }
    }

    private void getPlacesByString(String s, final boolean isPickup) {
        String queryEncode = s.toString();
        try {
            queryEncode = URLEncoder.encode(s.toString(), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String query = "&query=" + queryEncode;
        String location = "&location=" + Common.currenLocation.lareplacedude + "," + Common.currenLocation.longitude;
        String radius = "radius=1500";
        String key = "&key=" + ConfigApp.GOOGLE_API_KEY;
        String url = (URL_BASE_API_PLACES + radius + location + query + key).replaceAll(" ", "%20");
        Log.d("URL_PLACES", url);
        networkUtil.httpRequest(url, new HttpResponse() {

            @Override
            public void httpResponseSuccess(String response) {
                pickupPlacesSelected = true;
                Gson gson = new Gson();
                PlacesResponse placesResponse = gson.fromJson(response, PlacesResponse.clreplaced);
                for (Results result : placesResponse.results) {
                    if (result.geometry.location == null) {
                        placesResponse.results.remove(result);
                    } else if (result.geometry.location.lat == null || result.geometry.location.lat.equals("") || result.geometry.location.lat.equals("0.0")) {
                        placesResponse.results.remove(result);
                    } else if (result.geometry.location.lng == null || result.geometry.location.lng.equals("") || result.geometry.location.lng.equals("0.0")) {
                        placesResponse.results.remove(result);
                    }
                }
                if (isPickup)
                    implementPickupRecyclerView(placesResponse.results);
                else
                    implementDestinationRecyclerView(placesResponse.results);
            }
        });
    }

    private void implementPickupRecyclerView(final ArrayList<Results> results) {
        PlacesAdapter placesAdapter = new PlacesAdapter(this, results, new ClickListener() {

            @Override
            public void onClick(View view, int index) {
                mPlaceLocation = results.get(index).formatted_address;
                etFinalPickup.setText(mPlaceLocation);
                llPickupInput.setVisibility(View.GONE);
                llPickupPlace.setVisibility(View.VISIBLE);
                llDestinationInput.setVisibility(View.GONE);
                llDestinationPlace.setVisibility(View.VISIBLE);
                Double lat = Double.valueOf(results.get(index).geometry.location.lat);
                Double lng = Double.valueOf(results.get(index).geometry.location.lng);
                LatLng latLng = new LatLng(lat, lng);
                if (riderMarket != null)
                    riderMarket.remove();
                riderMarket = mMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marker)).replacedle("Pickup Here"));
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15.0f));
            }
        });
        rvPickupPlaces.setAdapter(placesAdapter);
    }

    private void implementDestinationRecyclerView(final ArrayList<Results> results) {
        PlacesAdapter placesAdapter = new PlacesAdapter(this, results, new ClickListener() {

            @Override
            public void onClick(View view, int index) {
                mPlaceDestination = results.get(index).formatted_address;
                etFinalDestination.setText(mPlaceDestination);
                llPickupInput.setVisibility(View.GONE);
                llPickupPlace.setVisibility(View.VISIBLE);
                llDestinationInput.setVisibility(View.GONE);
                llDestinationPlace.setVisibility(View.VISIBLE);
                Double lat = Double.valueOf(results.get(index).geometry.location.lat);
                Double lng = Double.valueOf(results.get(index).geometry.location.lng);
                LatLng latLng = new LatLng(lat, lng);
                if (destinationMarker != null)
                    destinationMarker.remove();
                destinationMarker = mMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_destination_marker)).replacedle("Destination"));
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15.0f));
                BottomSheetRiderFragment mBottomSheet = BottomSheetRiderFragment.newInstance(mPlaceLocation, mPlaceDestination, false);
                mBottomSheet.show(getSupportFragmentManager(), mBottomSheet.getTag());
            }
        });
        rvDestinationPlaces.setAdapter(placesAdapter);
    }
}

17 Source : ProfileActivity.java
with Apache License 2.0
from hbmartin

private void firebaseAuthWithFacebook(AccessToken token) {
    Timber.e("firebaseAuthWithFacebook:" + token);
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener(this, mAuthCompleteListener);
}

17 Source : FacebookSignIn.java
with Apache License 2.0
from FrogSquare

public clreplaced FacebookSignIn {

    public static FacebookSignIn getInstance(Activity p_activity) {
        if (mInstance == null) {
            mInstance = new FacebookSignIn(p_activity);
        }
        return mInstance;
    }

    public FacebookSignIn(Activity p_activity) {
        activity = p_activity;
    }

    public void init() {
        // Initialize listener.
        // ...
        FacebookSdk.sdkInitialize(activity);
        // FacebookSdk.setApplicationId(activity.getString(R.string.facebook_app_id));
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {

            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    for (UserInfo usr : user.getProviderData()) {
                        if (usr.getProviderId().equals("facebook.com")) {
                            Utils.d("GodotFireBase", "FB:AuthStateChanged:signed_in:" + user.getUid());
                            successSignin(user);
                        }
                    }
                } else {
                    // User is signed out
                    Utils.d("GodotFireBase", "FB:onAuthStateChanged:signed_out");
                    successSignOut();
                }
            // update user details;
            }
        };
        // AppEventsLogger.activityApp(activity);
        initCallbacks();
        onStart();
        Utils.d("GodotFireBase", "Facebook auth initialized.");
    }

    private void initCallbacks() {
        callbackManager = CallbackManager.Factory.create();
        /**
         * 		requestDialog = new GameRequestDialog(activity);
         * 		requestDialog.registerCallback(callbackManager,
         * 		new FacebookCallback<GameRequestDialog.Result>() {
         * 			@Override
         * 			public void onSuccess (GameRequestDialog.Result result) {
         * 				Utils.d("GodotFireBase", "Facebook request sent.");
         * 			}
         * 		});
         */
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult result) {
                Utils.d("GodotFireBase", "FB:Connected");
                handleAccessToken(result.getAccessToken());
            }

            @Override
            public void onCancel() {
                Utils.d("GodotFireBase", "FB:Canceled");
            }

            @Override
            public void onError(FacebookException exception) {
                Utils.d("GodotFireBase", "FB:Error, " + exception.toString());
            }
        });
        mAccessTokenTracker = new AccessTokenTracker() {

            @Override
            protected void onCurrentAccessTokenChanged(AccessToken old, AccessToken current) {
                Utils.d("GodotFireBase", "FB:AccessToken:Changed");
                if (current == null) {
                    successSignOut();
                } else {
                    accessToken = current;
                    try {
                        currentFBUser.put("token", accessToken.getToken().toString());
                    } catch (JSONException e) {
                        Utils.d("GodotFireBase", "FB:JSON:Error:162:" + e.toString());
                    }
                }
            }
        };
        mProfileTracker = new ProfileTracker() {

            @Override
            protected void onCurrentProfileChanged(Profile old, Profile current) {
                Utils.d("GodotFireBase", "FB:Profile:Changed");
                profile = current;
            }
        };
        mAccessTokenTracker.startTracking();
        mProfileTracker.startTracking();
        accessToken = AccessToken.getCurrentAccessToken();
        profile = Profile.getCurrentProfile();
    }

    public boolean isPermissionGiven(final String permission) {
        Utils.d("GodotFireBase", "FB:Checking:Available:Permissions:For: " + permission);
        accessToken = AccessToken.getCurrentAccessToken();
        if (accessToken == null && accessToken.isExpired()) {
            Utils.d("GodotFireBase", "FB:Token:NotValid");
            return false;
        }
        return (mUserPermissions.contains(permission));
    }

    public void getPermissions() {
        String uri = "me/permissions/";
        new GraphRequest(AccessToken.getCurrentAccessToken(), uri, null, HttpMethod.GET, new GraphRequest.Callback() {

            public void onCompleted(GraphResponse response) {
                /* handle the result */
                JSONArray data = response.getJSONObject().optJSONArray("data");
                mUserPermissions.clear();
                for (int i = 0; i < data.length(); i++) {
                    JSONObject dd = data.optJSONObject(i);
                    if (dd.optString("status").equals("granted")) {
                        mUserPermissions.add(dd.optString("permission"));
                    }
                }
            }
        }).executeAsync();
    }

    public String getUserPermissions() {
        if (!isConnected() && mUserPermissions.size() > 0) {
            Utils.d("GodotFireBase", "FB:Check:Login");
            return "NULL";
        }
        return mUserPermissions.toString();
    }

    public void revokePermission(final String permission) {
        AccessToken token = AccessToken.getCurrentAccessToken();
        String uri = "me/permissions/" + permission;
        GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, uri, new GraphRequest.Callback() {

            @Override
            public void onCompleted(GraphResponse response) {
                FacebookRequestError error = response.getError();
                if (error == null) {
                    Utils.d("GodotFireBase", "FB:Revoke:Response:" + response.toString());
                    getPermissions();
                }
            }
        });
        graphRequest.executeAsync();
    }

    public void askForPermission(final String replacedle, final String message, final String perm, final boolean read) {
        new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_LIGHT).setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int id) {
                if (!read) {
                    requestPublishPermissions(Arrays.asList(perm));
                } else {
                    requestReadPermissions(Arrays.asList(perm));
                }
            }
        }).setNegativeButton("No", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int id) {
            }
        }).setreplacedle(replacedle).setMessage(message).show();
    }

    public void requestReadPermissions(Collection<String> permissions) {
        LoginManager.getInstance().logInWithReadPermissions(activity, permissions);
    }

    public void requestPublishPermissions(Collection<String> permissions) {
        LoginManager.getInstance().logInWithPublishPermissions(activity, permissions);
    }

    public void signIn() {
        if (callbackManager == null) {
            Utils.d("GodotFireBase", "FB:Initialized");
            return;
        }
        requestReadPermissions(Arrays.asList("email", "public_profile"));
    // LoginManager.getInstance().logInWithReadPermissions(
    // activity, Arrays.asList("email", "public_profile"));
    }

    public void signOut() {
        if (callbackManager == null) {
            return;
        }
        Utils.d("GodotFireBase", "FB:Logout");
        mAuth.signOut();
        LoginManager.getInstance().logOut();
    }

    /**
     * GraphRequest *
     */
    /**
     * 	public void newRequest(final String uri, final String data) {
     *
     * 	}
     *
     * 	public void newPostRequest(final String uri, final String data) {
     * 		AccessToken token = AccessToken.getCurrentAccessToken();
     *
     * 		GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(
     * 		token, uri, new GraphRequest.Callback() {
     * 			@Override
     * 			public void onCompleted(GraphResponse response) {
     * 				Utils.d("GodotFireBase", "Revoke Permission: " + permission);
     * 			}
     * 		});
     *
     * 		graphRequest.executeAsync();
     * 	}
     *
     * 	public void newDeleteRequest(final String uri, final String data) {
     *
     * 	}
     */
    /**
     * GraphRequest *
     */
    public void revokeAccess() {
        mAuth.signOut();
        AccessToken token = AccessToken.getCurrentAccessToken();
        GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, "me/permissions", new GraphRequest.Callback() {

            @Override
            public void onCompleted(GraphResponse response) {
                FacebookRequestError error = response.getError();
                if (error == null) {
                    Utils.d("GodotFireBase", "FB:Delete:Access" + response.toString());
                }
            }
        });
        graphRequest.executeAsync();
    }

    public void handleAccessToken(AccessToken token) {
        Utils.d("GodotFireBase", "FB:Handle:AccessToken: " + token.getToken());
        // showProgressDialog();
        AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
        mAuth.signInWithCredential(credential).addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {

            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                Utils.d("GodotFireBase", "FB: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()) {
                    Utils.w("GodotFireBase", "FB:signInWithCredential" + task.getException().toString());
                }
            // hideProgressDialog();
            }
        });
    }

    protected void successSignin(FirebaseUser user) {
        Utils.d("GodotFireBase", "FB:Login:Success");
        isFacebookConnected = true;
        accessToken = AccessToken.getCurrentAccessToken();
        try {
            currentFBUser.put("uid", user.getUid());
            currentFBUser.put("name", user.getDisplayName());
            currentFBUser.put("email_id", user.getEmail());
            currentFBUser.put("photo_uri", user.getPhotoUrl());
            currentFBUser.put("token", accessToken.getToken().toString());
        } catch (JSONException e) {
            Utils.d("GodotFireBase", "FB:JSON:Error:" + e.toString());
        }
        getPermissions();
        // call Script
        Utils.callScriptFunc("Auth", "FacebookLogin", "true");
    }

    protected void successSignOut() {
        isFacebookConnected = false;
        currentFBUser = null;
        currentFBUser = new JSONObject();
        // call script.
        Utils.callScriptFunc("Auth", "FacebookLogin", "false");
    }

    public String getUserDetails() {
        return currentFBUser.toString();
    }

    public boolean isConnected() {
        return isFacebookConnected;
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    public void onStart() {
        mAuth.addAuthStateListener(mAuthListener);
    }

    public void onStop() {
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
        isFacebookConnected = false;
        activity = null;
        mAccessTokenTracker.stopTracking();
        mProfileTracker.stopTracking();
    }

    private static Activity activity = null;

    private static FacebookSignIn mInstance = null;

    // private static GameRequestDialog requestDialog;
    private static CallbackManager callbackManager;

    private static AccessTokenTracker mAccessTokenTracker;

    private static ProfileTracker mProfileTracker;

    private static AccessToken accessToken;

    private static Profile profile;

    private Boolean isFacebookConnected = false;

    private JSONObject currentFBUser = new JSONObject();

    private ArrayList<String> mUserPermissions = new ArrayList<String>();

    private FirebaseAuth mAuth;

    private FirebaseAuth.AuthStateListener mAuthListener;
}

17 Source : FacebookSignIn.java
with Apache License 2.0
from FrogSquare

public void handleAccessToken(AccessToken token) {
    Utils.d("GodotFireBase", "FB:Handle:AccessToken: " + token.getToken());
    // showProgressDialog();
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential).addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {

        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Utils.d("GodotFireBase", "FB: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()) {
                Utils.w("GodotFireBase", "FB:signInWithCredential" + task.getException().toString());
            }
        // hideProgressDialog();
        }
    });
}

17 Source : MainActivity.java
with Apache License 2.0
from firebase

public void getFbCredentials() {
    AccessToken token = AccessToken.getCurrentAccessToken();
    // [START auth_fb_cred]
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
// [END auth_fb_cred]
}

17 Source : KatanaProxyLoginMethodHandler.java
with Apache License 2.0
from eviltnan

private LoginClient.Result handleResultOk(LoginClient.Request request, Intent data) {
    Bundle extras = data.getExtras();
    String error = getError(extras);
    String errorCode = extras.getString("error_code");
    String errorMessage = getErrorMessage(extras);
    String e2e = extras.getString(NativeProtocol.FACEBOOK_PROXY_AUTH_E2E_KEY);
    if (!Utility.isNullOrEmpty(e2e)) {
        logWebLoginCompleted(e2e);
    }
    if (error == null && errorCode == null && errorMessage == null) {
        try {
            AccessToken token = createAccessTokenFromWebBundle(request.getPermissions(), extras, AccessTokenSource.FACEBOOK_APPLICATION_WEB, request.getApplicationId());
            return LoginClient.Result.createTokenResult(request, token);
        } catch (FacebookException ex) {
            return LoginClient.Result.createErrorResult(request, null, ex.getMessage());
        }
    } else if (ServerProtocol.errorsProxyAuthDisabled.contains(error)) {
        return null;
    } else if (ServerProtocol.errorsUserCanceled.contains(error)) {
        return LoginClient.Result.createCancelResult(request, null);
    } else {
        return LoginClient.Result.createErrorResult(request, error, errorMessage, errorCode);
    }
}

17 Source : FacebookSignIn.java
with Apache License 2.0
from Dhciolfi

public clreplaced FacebookSignIn {

    public static FacebookSignIn getInstance(Activity p_activity) {
        if (mInstance == null) {
            mInstance = new FacebookSignIn(p_activity);
        }
        return mInstance;
    }

    public FacebookSignIn(Activity p_activity) {
        activity = p_activity;
    }

    public void init() {
        // Initialize listener.
        // ...
        FacebookSdk.sdkInitialize(activity);
        // FacebookSdk.setApplicationId(activity.getString(R.string.facebook_app_id));
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {

            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    for (UserInfo usr : user.getProviderData()) {
                        if (usr.getProviderId().equals("facebook.com")) {
                            Utils.d("GodotFireBase", "FB:AuthStateChanged:signed_in:" + user.getUid());
                            successSignin(user);
                        }
                    }
                } else {
                    // User is signed out
                    Utils.d("GodotFireBase", "FB:onAuthStateChanged:signed_out");
                    successSignOut();
                }
            // update user details;
            }
        };
        // AppEventsLogger.activityApp(activity);
        initCallbacks();
        onStart();
        Utils.d("GodotFireBase", "Facebook auth initialized.");
    }

    private void initCallbacks() {
        callbackManager = CallbackManager.Factory.create();
        /**
         * 		requestDialog = new GameRequestDialog(activity);
         * 		requestDialog.registerCallback(callbackManager,
         * 		new FacebookCallback<GameRequestDialog.Result>() {
         * 			@Override
         * 			public void onSuccess (GameRequestDialog.Result result) {
         * 				Utils.d("GodotFireBase", "Facebook request sent.");
         * 			}
         * 		});
         */
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult result) {
                Utils.d("GodotFireBase", "FB:Connected");
                handleAccessToken(result.getAccessToken());
            }

            @Override
            public void onCancel() {
                Utils.d("GodotFireBase", "FB:Canceled");
            }

            @Override
            public void onError(FacebookException exception) {
                Utils.d("GodotFireBase", "FB:Error, " + exception.toString());
            }
        });
        mAccessTokenTracker = new AccessTokenTracker() {

            @Override
            protected void onCurrentAccessTokenChanged(AccessToken old, AccessToken current) {
                Utils.d("GodotFireBase", "FB:AccessToken:Changed");
                if (current == null) {
                    successSignOut();
                } else {
                    accessToken = current;
                    try {
                        currentFBUser.put("token", accessToken.getToken().toString());
                    } catch (JSONException e) {
                        Utils.d("GodotFireBase", "FB:JSON:Error:162:" + e.toString());
                    }
                }
            }
        };
        mProfileTracker = new ProfileTracker() {

            @Override
            protected void onCurrentProfileChanged(Profile old, Profile current) {
                Utils.d("GodotFireBase", "FB:Profile:Changed");
                profile = current;
            }
        };
        mAccessTokenTracker.startTracking();
        mProfileTracker.startTracking();
        accessToken = AccessToken.getCurrentAccessToken();
        profile = Profile.getCurrentProfile();
    }

    public boolean isPermissionGiven(final String permission) {
        Utils.d("GodotFireBase", "FB:Checking:Available:Permissions:For: " + permission);
        accessToken = AccessToken.getCurrentAccessToken();
        if (accessToken == null && accessToken.isExpired()) {
            Utils.d("GodotFireBase", "FB:Token:NotValid");
            return false;
        }
        return (mUserPermissions.contains(permission));
    }

    public void getPermissions() {
        String uri = "me/permissions/";
        new GraphRequest(AccessToken.getCurrentAccessToken(), uri, null, HttpMethod.GET, new GraphRequest.Callback() {

            public void onCompleted(GraphResponse response) {
                /* handle the result */
                JSONArray data = response.getJSONObject().optJSONArray("data");
                mUserPermissions.clear();
                for (int i = 0; i < data.length(); i++) {
                    JSONObject dd = data.optJSONObject(i);
                    if (dd.optString("status").equals("granted")) {
                        mUserPermissions.add(dd.optString("permission"));
                    }
                }
            }
        }).executeAsync();
    }

    public String getUserPermissions() {
        if (!isConnected() && mUserPermissions.size() > 0) {
            Utils.d("GodotFireBase", "FB:Check:Login");
            return "NULL";
        }
        return mUserPermissions.toString();
    }

    public void revokePermission(final String permission) {
        AccessToken token = AccessToken.getCurrentAccessToken();
        String uri = "me/permissions/" + permission;
        GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, uri, new GraphRequest.Callback() {

            @Override
            public void onCompleted(GraphResponse response) {
                FacebookRequestError error = response.getError();
                if (error == null) {
                    Utils.d("GodotFireBase", "FB:Revoke:Response:" + response.toString());
                    getPermissions();
                }
            }
        });
        graphRequest.executeAsync();
    }

    public void askForPermission(final String replacedle, final String message, final String perm, final boolean read) {
        new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_LIGHT).setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int id) {
                if (!read) {
                    requestPublishPermissions(Arrays.asList(perm));
                } else {
                    requestReadPermissions(Arrays.asList(perm));
                }
            }
        }).setNegativeButton("No", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int id) {
            }
        }).setreplacedle(replacedle).setMessage(message).show();
    }

    public void requestReadPermissions(List permissions) {
        LoginManager.getInstance().logInWithReadPermissions(activity, permissions);
    }

    public void requestPublishPermissions(List permissions) {
        LoginManager.getInstance().logInWithPublishPermissions(activity, permissions);
    }

    public void signIn() {
        if (callbackManager == null) {
            Utils.d("GodotFireBase", "FB:Initialized");
            return;
        }
        requestReadPermissions(Arrays.asList("email", "public_profile"));
    // LoginManager.getInstance().logInWithReadPermissions(
    // activity, Arrays.asList("email", "public_profile"));
    }

    public void signOut() {
        if (callbackManager == null) {
            return;
        }
        Utils.d("GodotFireBase", "FB:Logout");
        mAuth.signOut();
        LoginManager.getInstance().logOut();
    }

    /**
     * GraphRequest *
     */
    /**
     * 	public void newRequest(final String uri, final String data) {
     *
     * 	}
     *
     * 	public void newPostRequest(final String uri, final String data) {
     * 		AccessToken token = AccessToken.getCurrentAccessToken();
     *
     * 		GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(
     * 		token, uri, new GraphRequest.Callback() {
     * 			@Override
     * 			public void onCompleted(GraphResponse response) {
     * 				Utils.d("GodotFireBase", "Revoke Permission: " + permission);
     * 			}
     * 		});
     *
     * 		graphRequest.executeAsync();
     * 	}
     *
     * 	public void newDeleteRequest(final String uri, final String data) {
     *
     * 	}
     */
    /**
     * GraphRequest *
     */
    public void revokeAccess() {
        mAuth.signOut();
        AccessToken token = AccessToken.getCurrentAccessToken();
        GraphRequest graphRequest = GraphRequest.newDeleteObjectRequest(token, "me/permissions", new GraphRequest.Callback() {

            @Override
            public void onCompleted(GraphResponse response) {
                FacebookRequestError error = response.getError();
                if (error == null) {
                    Utils.d("GodotFireBase", "FB:Delete:Access" + response.toString());
                }
            }
        });
        graphRequest.executeAsync();
    }

    public void handleAccessToken(AccessToken token) {
        Utils.d("GodotFireBase", "FB:Handle:AccessToken: " + token.getToken());
        // showProgressDialog();
        AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
        mAuth.signInWithCredential(credential).addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {

            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                Utils.d("GodotFireBase", "FB: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()) {
                    Utils.w("GodotFireBase", "FB:signInWithCredential" + task.getException().toString());
                }
            // hideProgressDialog();
            }
        });
    }

    protected void successSignin(FirebaseUser user) {
        Utils.d("GodotFireBase", "FB:Login:Success");
        isFacebookConnected = true;
        accessToken = AccessToken.getCurrentAccessToken();
        try {
            currentFBUser.put("uid", user.getUid());
            currentFBUser.put("name", user.getDisplayName());
            currentFBUser.put("email_id", user.getEmail());
            currentFBUser.put("photo_uri", user.getPhotoUrl());
            currentFBUser.put("token", accessToken.getToken().toString());
        } catch (JSONException e) {
            Utils.d("GodotFireBase", "FB:JSON:Error:" + e.toString());
        }
        getPermissions();
        // call Script
        Utils.callScriptFunc("Auth", "FacebookLogin", "true");
    }

    protected void successSignOut() {
        isFacebookConnected = false;
        currentFBUser = null;
        currentFBUser = new JSONObject();
        // call script.
        Utils.callScriptFunc("Auth", "FacebookLogin", "false");
    }

    public String getUserDetails() {
        return currentFBUser.toString();
    }

    public boolean isConnected() {
        return isFacebookConnected;
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    public void onStart() {
        mAuth.addAuthStateListener(mAuthListener);
    }

    public void onStop() {
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
        isFacebookConnected = false;
        activity = null;
        mAccessTokenTracker.stopTracking();
        mProfileTracker.stopTracking();
    }

    private static Activity activity = null;

    private static FacebookSignIn mInstance = null;

    // private static GameRequestDialog requestDialog;
    private static CallbackManager callbackManager;

    private static AccessTokenTracker mAccessTokenTracker;

    private static ProfileTracker mProfileTracker;

    private static AccessToken accessToken;

    private static Profile profile;

    private Boolean isFacebookConnected = false;

    private JSONObject currentFBUser = new JSONObject();

    private ArrayList mUserPermissions = new ArrayList<String>();

    private FirebaseAuth mAuth;

    private FirebaseAuth.AuthStateListener mAuthListener;
}

17 Source : FacebookHelper.java
with Apache License 2.0
from davideas

public clreplaced FacebookHelper {

    /* Constants */
    public static final int RC_FACEBOOK_SIGN_IN = 64206;

    private static final int RC_FACEBOOK_SHARE = 64207;

    private static final FacebookHelper mInstance = new FacebookHelper();

    public static final String FACEBOOK_PREFERENCES = "facebook_prefs";

    public static final String FACEBOOK_USER_FIRST_NAME = "first_name";

    public static final String FACEBOOK_USER_LAST_NAME = "last_name";

    public static final String FACEBOOK_USER_ID = "id";

    public static final String FACEBOOK_USER_EMAIL = "email";

    public static final String FACEBOOK_USER_GENDER = "gender";

    public static final String FACEBOOK_USER_BIRTHDAY = "birthday";

    public static final String FACEBOOK_USER_LOCATION = "location";

    public static final String FACEBOOK_USER_IMAGE_URL = "picture";

    private static final String FACEBOOK_PERMISSION_PUBLIC_PROFILE = "public_profile";

    private static final String FACEBOOK_PERMISSION_EMAIL = "email";

    // Only friends that have logged in to my app
    private static final String FACEBOOK_PERMISSION_USER_FRIENDS = "user_friends";

    /* General obj */
    private CallbackManager mCallbackManager;

    private FacebookLoginResultCallback mFacebookLoginResultCallBack;

    private LoginResult mLoginResult;

    private AccessTokenTracker mAccessTokenTracker;

    private ProfileTracker mProfileTracker;

    private AccessToken mFacebookAccessToken;

    private BitmapDrawable mUserImage;

    private PreferencesService preferences;

    /* User data */
    private List<String> mReadPermissionsRequested;

    private List<String> mUserDataFieldsRequested;

    private Map<String, String> mUserData;

    /**
     * The interface Facebook login result callback.
     */
    /* Interfaces */
    public interface FacebookLoginResultCallback {

        /**
         * On facebook login success.
         *
         * @param result the result
         */
        void onFacebookLoginSuccess(LoginResult result);

        /**
         * On facebook login cancel.
         */
        void onFacebookLoginCancel();

        /**
         * On facebook login error.
         *
         * @param e the e
         */
        void onFacebookLoginError(FacebookException e);

        /**
         * On facebook login image download failed.
         */
        void onFacebookLoginImageDownloadFailed();
    }

    /**
     * The interface Facebook share result callback.
     */
    public interface FacebookShareResultCallback {

        void onFacebookShareSuccess(Sharer.Result result);

        void onFacebookShareCancel();

        void onFacebookShareError(FacebookException error);

        void onFacebookShareCannotShowDialog();
    }

    /*
     * =================
     * Constructor
     * =================
     */
    private FacebookHelper() {
    }

    /**
     * Gets instance.
     *
     * @return the instance
     */
    public static FacebookHelper getInstance() {
        return mInstance;
    }

    /**
     * Init helper.
     * Once initialized, the clreplaced will:
     * 1.Restore and hold user data if connected {@link #mUserData}
     * 2.Initialize profile tracker to track changes of the user profile {@link #mProfileTracker}
     * 3.Initialize access token to track changes of the Facebook access token {@link #mAccessTokenTracker}
     *
     * @param activity the activity
     */
    public void initHelper(@NonNull Activity activity) {
        mUserData = new HashMap<>();
        initUser(activity);
        initAccessTokenTracker();
        initProfileTracker();
    }

    /*
     * =================
     * Actions
     * =================
     */
    /**
     * Sign in to google account - without Google's log in button.
     *
     * @param activity the activity
     * @param callback the callback to receive the method's result
     */
    public void signIn(@NonNull Activity activity, @NonNull final FacebookLoginResultCallback callback) {
        mCallbackManager = CallbackManager.Factory.create();
        mFacebookLoginResultCallBack = callback;
        registerCallBackManager(activity);
        LoginManager.getInstance().setLoginBehavior(LoginBehavior.NATIVE_WITH_FALLBACK).logInWithPublishPermissions(activity, null);
    }

    /**
     * Sign in to google account - with Google's log in button.
     *
     * @param activity    the activity
     * @param callback    the callback to receive the method's result
     * @param loginButton the login button replacedociated with this sign in
     */
    public void signIn(@NonNull Activity activity, @NonNull final FacebookLoginResultCallback callback, @NonNull LoginButton loginButton) {
        mCallbackManager = CallbackManager.Factory.create();
        mFacebookLoginResultCallBack = callback;
        initLoginButton(activity, loginButton);
        registerCallBackManager(activity, loginButton);
    }

    /**
     * Sign out.
     */
    public void signOut() {
        LoginManager.getInstance().logOut();
    }

    /**
     * Share content on facebook wall
     *
     * @param activity the activity
     * @param callback the callback to receive a result of this share
     * @param url      the url you wish to share
     * @param quote    the text you wish to replacedociate with the url shared
     */
    private void shareLinkOnFacebook(@NonNull final Activity activity, @NonNull final FacebookShareResultCallback callback, @NonNull String url, @Nullable String quote) {
        ShareDialog shareDialog = new ShareDialog(activity);
        shareDialog.registerCallback(mCallbackManager, new FacebookCallback<Sharer.Result>() {

            @Override
            public void onSuccess(Sharer.Result result) {
                callback.onFacebookShareSuccess(result);
            }

            @Override
            public void onCancel() {
                callback.onFacebookShareCancel();
            }

            @Override
            public void onError(FacebookException error) {
                callback.onFacebookShareError(error);
            }
        }, RC_FACEBOOK_SHARE);
        if (ShareDialog.canShow(ShareLinkContent.clreplaced)) {
            ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentUrl(Uri.parse(url)).setQuote(quote).build();
            shareDialog.show(linkContent);
        } else {
            callback.onFacebookShareCannotShowDialog();
        }
    }

    /*
     * =================
     * Account info
     * =================
     */
    /**
     * Is logged in boolean.
     *
     * @return the boolean result of if the user is currently connected
     */
    public boolean isLoggedIn() {
        AccessToken accessToken = AccessToken.getCurrentAccessToken();
        return accessToken != null;
    }

    private List<String> getFacebookReadPermissions() {
        List<String> facebookPermissions = new ArrayList<>();
        facebookPermissions.add(FACEBOOK_PERMISSION_PUBLIC_PROFILE);
        facebookPermissions.add(FACEBOOK_PERMISSION_EMAIL);
        if (mReadPermissionsRequested != null) {
            for (String permission : mReadPermissionsRequested) {
                facebookPermissions.add(permission);
            }
        }
        return facebookPermissions;
    }

    /*
     * =================
     * Init methods
     * =================
     */
    /**
     * Init user if connected.
     *
     * @param activity the activity
     */
    private void initUser(Activity activity) {
        if (isLoggedIn()) {
            // restore user data
            String id = preferences.getString(FACEBOOK_USER_ID, null);
            String fistName = preferences.getString(FACEBOOK_USER_FIRST_NAME, null);
            String lastName = preferences.getString(FACEBOOK_USER_LAST_NAME, null);
            String email = preferences.getString(FACEBOOK_USER_EMAIL, null);
            String birthday = preferences.getString(FACEBOOK_USER_BIRTHDAY, null);
            String gender = preferences.getString(FACEBOOK_USER_GENDER, null);
            String location = preferences.getString(FACEBOOK_USER_LOCATION, null);
            String imageUrl = preferences.getString(FACEBOOK_USER_IMAGE_URL, null);
            // init data
            mUserData.put(FACEBOOK_USER_ID, id);
            mUserData.put(FACEBOOK_USER_FIRST_NAME, fistName);
            mUserData.put(FACEBOOK_USER_LAST_NAME, lastName);
            mUserData.put(FACEBOOK_USER_EMAIL, email);
            mUserData.put(FACEBOOK_USER_BIRTHDAY, birthday);
            mUserData.put(FACEBOOK_USER_GENDER, gender);
            mUserData.put(FACEBOOK_USER_LOCATION, location);
            mUserData.put(FACEBOOK_USER_IMAGE_URL, imageUrl);
            downloadImageUrl(activity, imageUrl);
        }
    }

    /**
     * Init Google log in button.
     *
     * @param activity the activity
     */
    private void initLoginButton(Activity activity, LoginButton loginButton) {
        loginButton.setReadPermissions(getFacebookReadPermissions());
        loginButton.setLoginBehavior(LoginBehavior.NATIVE_WITH_FALLBACK);
    }

    /**
     * Register call back manager.
     *
     * @param activity the activity
     */
    private void registerCallBackManager(final Activity activity) {
        LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                mLoginResult = loginResult;
                getUserProfile(activity);
            }

            @Override
            public void onCancel() {
                mFacebookLoginResultCallBack.onFacebookLoginCancel();
            }

            @Override
            public void onError(FacebookException error) {
                mFacebookLoginResultCallBack.onFacebookLoginError(error);
            }
        });
    }

    /**
     * Register call back manager to Google log in button.
     *
     * @param activity    the activity
     * @param loginButton the login button
     */
    private void registerCallBackManager(final Activity activity, LoginButton loginButton) {
        loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                mLoginResult = loginResult;
                getUserProfile(activity);
            }

            @Override
            public void onCancel() {
                mFacebookLoginResultCallBack.onFacebookLoginCancel();
            }

            @Override
            public void onError(FacebookException error) {
                mFacebookLoginResultCallBack.onFacebookLoginError(error);
            }
        });
    }

    private void initAccessTokenTracker() {
        mAccessTokenTracker = new AccessTokenTracker() {

            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
                // Set the access token using
                // currentAccessToken when it's loaded or set.
                // If the access token is available already replacedign it.
                mFacebookAccessToken = AccessToken.getCurrentAccessToken();
            // Toast.makeText(mActivity, "Facebook current Access Token changed", Toast.LENGTH_SHORT)
            // .show();
            }
        };
    }

    private void initProfileTracker() {
        mProfileTracker = new ProfileTracker() {

            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
            // Toast.makeText(mActivity, "Facebook current profile changed", Toast.LENGTH_SHORT)
            // .show();
            }
        };
    }

    /*
     * =================
     * Helper methods
     * =================
     */
    /**
     * Get requested user data from Facebook
     */
    private void getUserProfile(final Activity activity) {
        GraphRequest request = GraphRequest.newMeRequest(mLoginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {

            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                // Get facebook data from login
                parseFacebookUserData(activity, object);
            }
        });
        Bundle parameters = new Bundle();
        String[] params = { FACEBOOK_USER_ID, FACEBOOK_USER_FIRST_NAME, FACEBOOK_USER_LAST_NAME, FACEBOOK_USER_EMAIL, FACEBOOK_USER_BIRTHDAY, FACEBOOK_USER_GENDER, FACEBOOK_USER_LOCATION, FACEBOOK_USER_IMAGE_URL };
        parameters.putString("fields", createStringParams(params));
        request.setParameters(parameters);
        request.executeAsync();
    }

    /**
     * Extract data from object
     *
     * @param object json object received from facebook log in
     */
    private void parseFacebookUserData(Activity activity, JSONObject object) {
        HashMap<String, String> userPrefs = new HashMap<>();
        String imageUrl = null;
        try {
            String id = object.getString("id");
            mUserData.put(FACEBOOK_USER_ID, id);
            userPrefs.put(FACEBOOK_USER_ID, id);
            try {
                URL profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?width=200&height=150");
                mUserData.put(FACEBOOK_USER_IMAGE_URL, profile_pic.toString());
                userPrefs.put(FACEBOOK_USER_ID, profile_pic.toString());
                imageUrl = profile_pic.toString();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            if (object.has("first_name")) {
                String value = object.getString("first_name");
                mUserData.put(FACEBOOK_USER_FIRST_NAME, value);
                userPrefs.put(FACEBOOK_USER_FIRST_NAME, value);
            }
            if (object.has("last_name")) {
                String value = object.getString("last_name");
                mUserData.put(FACEBOOK_USER_LAST_NAME, value);
                userPrefs.put(FACEBOOK_USER_ID, value);
            }
            if (object.has("email")) {
                String value = object.getString("email");
                mUserData.put(FACEBOOK_USER_EMAIL, value);
                userPrefs.put(FACEBOOK_USER_ID, value);
            }
            if (object.has("gender")) {
                String value = object.getString("gender");
                mUserData.put(FACEBOOK_USER_GENDER, value);
                userPrefs.put(FACEBOOK_USER_ID, value);
            }
            if (object.has("birthday")) {
                String value = object.getString("birthday");
                mUserData.put(FACEBOOK_USER_BIRTHDAY, value);
                userPrefs.put(FACEBOOK_USER_ID, value);
            }
            if (object.has("location")) {
                String value = object.getString("location");
                mUserData.put(FACEBOOK_USER_LOCATION, value);
                userPrefs.put(FACEBOOK_USER_ID, value);
            }
        } catch (JSONException e) {
        // TODO: 26/07/2017 log error
        }
        preferences.putStringsFromMap(userPrefs);
        if (imageUrl != null) {
            downloadImageUrl(activity, imageUrl);
        }
    }

    private void downloadImageUrl(final Activity activity, final String imageUrl) {
        final SimpleTarget<Bitmap> target = new SimpleTarget<Bitmap>() {

            @Override
            public void onResourceReady(Bitmap bitmap, Transition<? super Bitmap> transition) {
                mUserImage = new BitmapDrawable(activity.getResources(), bitmap);
                mFacebookLoginResultCallBack.onFacebookLoginSuccess(mLoginResult);
            }

            @Override
            public void onLoadFailed(@Nullable Drawable errorDrawable) {
                super.onLoadFailed(errorDrawable);
                mFacebookLoginResultCallBack.onFacebookLoginImageDownloadFailed();
            }
        };
        new Handler(Looper.getMainLooper()).post(new Runnable() {

            @Override
            public void run() {
                RequestOptions options = new RequestOptions().placeholder(R.mipmap.ic_launcher_round);
                Glide.with(activity.getApplicationContext()).asBitmap().apply(options).load(imageUrl).into(target);
            }
        });
    }

    /**
     * Create single string containing and formatted appropriately
     *
     * @param params Array of permissions to receive from Facebook
     * @return Formatted string
     */
    private String createStringParams(String[] params) {
        if (mUserDataFieldsRequested != null) {
            ArrayList<String> paramsList = new ArrayList<>(Arrays.asList(params));
            for (String param : mUserDataFieldsRequested) {
                paramsList.add(param);
            }
            params = new String[paramsList.size()];
            params = paramsList.toArray(params);
        }
        StringBuilder builder = new StringBuilder();
        for (String param : params) {
            builder.append(param + ",");
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    /*
     * =================
     * Getter methods
     * =================
     */
    /**
     * Gets facebook callback manager.
     *
     * @return the facebook callback manager
     */
    public CallbackManager getFacebookCallbackManager() {
        return this.mCallbackManager;
    }

    /**
     * Gets facebook access token tracker.
     *
     * @return the facebook access token tracker
     */
    public AccessTokenTracker getFacebookAccessTokenTracker() {
        return this.mAccessTokenTracker;
    }

    /**
     * Gets facebook profile tracker.
     *
     * @return the facebook profile tracker
     */
    public ProfileTracker getFacebookProfileTracker() {
        return this.mProfileTracker;
    }

    /**
     * Gets facebook access token.
     *
     * @return the facebook access token
     */
    public AccessToken getFacebookAccessToken() {
        return this.mFacebookAccessToken;
    }

    /**
     * Gets user specific data field.
     * The user data keys are the constants at the start of this clreplaced, for example:
     * {@value FACEBOOK_PERMISSION_EMAIL}
     *
     * @param field the field/key you wish to receive
     * @return the user data field
     */
    public String getUserDataField(String field) {
        return mUserData.get(field);
    }

    /**
     * Gets all user data in key value Map.
     * The user data keys are the constants at the start of this clreplaced, for example:
     * {@value FACEBOOK_PERMISSION_EMAIL}
     *
     * @return the user data
     */
    public Map<String, String> getUserData() {
        return this.mUserData;
    }

    public Drawable getUserImage() {
        return this.mUserImage;
    }

    /**
     * Gets facebook hash to register in Facebook developer's console.
     */
    public void getFacebookHash(@NonNull Activity activity) {
        try {
            PackageInfo info = activity.getPackageManager().getPackageInfo("il.co.cambium.sport5radio", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Toast.makeText(activity, "PackageManager.NameNotFoundException ", Toast.LENGTH_SHORT).show();
        } catch (NoSuchAlgorithmException e) {
            Toast.makeText(activity, "NoSuchAlgorithmException", Toast.LENGTH_SHORT).show();
        }
    }

    /*
     * =================
     * Setter methods
     * =================
     */
    /**
     * Default read permission asked for are:
     * <p>
     * {@value FACEBOOK_PERMISSION_PUBLIC_PROFILE}
     * {@value FACEBOOK_PERMISSION_EMAIL}
     * <p>
     * If you require more read permissions, you may preplaced them here in a form of a list
     * After {@link #initHelper(Activity)} ,
     * And before {@link #signIn(Activity, FacebookLoginResultCallback)}, {@link #signIn(Activity, FacebookLoginResultCallback, LoginButton)}
     *
     * @param readPermissions the read permissions
     */
    public void setReadPermissions(List<String> readPermissions) {
        this.mReadPermissionsRequested = readPermissions;
    }

    /**
     * Default user data fetched are:
     * <p>
     * {@value FACEBOOK_USER_FIRST_NAME}
     * {@value FACEBOOK_USER_LAST_NAME}
     * {@value FACEBOOK_USER_EMAIL}
     * {@value FACEBOOK_USER_BIRTHDAY}
     * {@value FACEBOOK_USER_ID}
     * {@value FACEBOOK_USER_GENDER}
     * {@value FACEBOOK_USER_LOCATION}
     * {@value FACEBOOK_USER_IMAGE_URL}
     * <p>
     * If you require more user data, you may preplaced the params here in a form of a list
     *
     * @param userDataRequested the user data fields requested
     */
    public void setUserDataRequested(List<String> userDataRequested) {
        this.mUserDataFieldsRequested = userDataRequested;
    }
}

17 Source : LoginActivity.java
with Mozilla Public License 2.0
from clementf2b

public clreplaced LoginActivity extends AppCompatActivity {

    private final String TAG = this.getClreplaced().getSimpleName();

    private RelativeLayout activity_login_layout;

    private EditText mLoginEmailField;

    private EditText mLoginPreplacedwordField;

    private Button mLoginBtn;

    private Button mGoRegister;

    private Button mFacebookBtn;

    private Button mGoogleBtn;

    private ImageButton preplacedwordVisibleButton;

    private CheckBox mRemeberPreplacedwordCheckBox;

    private boolean pw_shown;

    private FirebaseAuth mAuth;

    private DatabaseReference mDatabaseUsers;

    private ProgressDialog mProgress;

    private static final int RC_SIGN_IN = 1;

    private GoogleApiClient mGoogleApiClient;

    private FirebaseAuth.AuthStateListener mAuthListener;

    // facebook login use
    private CallbackManager mCallbackManager;

    private AccessToken accessToken;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        setContentView(R.layout.activity_login);
        activity_login_layout = (RelativeLayout) findViewById(R.id.activity_login_layout);
        CheckConnectivity check = new CheckConnectivity();
        Boolean conn = check.checkNow(this.getApplicationContext());
        if (conn == true) {
            // run your normal code path here
            Log.d(TAG, "Network connected");
        } else {
            // Send a warning message to the user
            Snackbar snackbar = Snackbar.make(activity_login_layout, "No Internet Access", Snackbar.LENGTH_LONG);
            snackbar.show();
        }
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setLogo(R.mipmap.app_icon);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        SpannableString s = new SpannableString("FaceT");
        s.setSpan(new TypefaceSpan(LoginActivity.this, FontManager.CUSTOM_FONT), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        getSupportActionBar().setreplacedle(s);
        Typeface fontType = FontManager.getTypeface(getApplicationContext(), FontManager.APP_FONT);
        FontManager.markAsIconContainer(findViewById(R.id.activity_login_layout), fontType);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = getWindow();
            // Translucent status bar
            window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {

            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d(TAG, "onAuthStateChanged:signed_out");
                }
            }
        };
        mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users");
        mDatabaseUsers.keepSynced(true);
        mProgress = new ProgressDialog(this);
        mLoginEmailField = (EditText) findViewById(R.id.loginemailfield);
        mLoginEmailField.setBackgroundColor(111);
        mLoginPreplacedwordField = (EditText) findViewById(R.id.loginpreplacedwordfield);
        preplacedwordVisibleButton = (ImageButton) findViewById(R.id.preplacedwordfield_visible_button);
        mLoginBtn = (Button) findViewById(R.id.login_btn);
        mGoRegister = (Button) findViewById(R.id.goregister_btn);
        mGoogleBtn = (Button) findViewById(R.id.signingooglebtn);
        mFacebookBtn = (Button) findViewById(R.id.facebook_login_btn);
        mRemeberPreplacedwordCheckBox = (CheckBox) findViewById(R.id.remember_pw_checkbox);
        SharedPreferences sharedPreferences = getSharedPreferences("LoginData", Context.MODE_PRIVATE);
        mLoginEmailField.setText(sharedPreferences.getString("email", ""));
        mLoginPreplacedwordField.setText(sharedPreferences.getString("preplacedword", ""));
        mRemeberPreplacedwordCheckBox.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    Log.d(TAG, "check box is Checked");
                    Snackbar snackbar = Snackbar.make(activity_login_layout, "Login data will be stored", Snackbar.LENGTH_LONG);
                    snackbar.show();
                }
            }
        });
        mLoginBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (mRemeberPreplacedwordCheckBox.isChecked())
                    saveLoginData();
                checklogin();
            }
        });
        // if clicked the simple login will fade in and social login will disappear
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.signingooglebtn));
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.preplacedwordfield_visible_button));
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.loginemailfield));
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.loginpreplacedwordfield));
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.login_btn));
        YoYo.with(Techniques.FlipInX).duration(1000).playOn(findViewById(R.id.facebook_login_btn));
        // show pw
        pw_shown = false;
        preplacedwordVisibleButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (pw_shown == true) {
                    // view pw
                    mLoginPreplacedwordField.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                    preplacedwordVisibleButton.setImageResource(R.mipmap.ic_visibility_white_24dp);
                    pw_shown = false;
                } else {
                    // hide pw
                    mLoginPreplacedwordField.setTransformationMethod(PreplacedwordTransformationMethod.getInstance());
                    preplacedwordVisibleButton.setImageResource(R.mipmap.ic_visibility_off_white_24dp);
                    pw_shown = true;
                }
            }
        });
        mGoRegister.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent regIntent = new Intent(LoginActivity.this, RegisterActivity.clreplaced);
                // regIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(regIntent);
            }
        });
        // ------------Google Sign in----------
        // Configure Google Sign In
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).requestEmail().build();
        // ATTENTION: This "addApi(AppIndex.API)"was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {

            @Override
            public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
            }
        }).addApi(Auth.GOOGLE_SIGN_IN_API, gso).addApi(AppIndex.API).build();
        mGoogleBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                signIn();
            }
        });
        // Initialize Facebook Login button
        mCallbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.d(TAG, "facebook:onSuccess:" + loginResult);
                // accessToken之後或許還會用到 先存起來
                accessToken = loginResult.getAccessToken();
                handleFacebookAccessToken(accessToken);
                Log.d("FB", "access token got : " + accessToken);
                // send request and call graph api
                final String[] fbname = { "" };
                GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {

                    // 當RESPONSE回來的時候
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        // 讀出姓名 ID FB個人頁面連結
                        Log.d(TAG + "FB", "complete");
                        Log.d("FB object", object.toString());
                        Log.d("FB graphResponse", response.toString());
                        Log.d("FB", object.optString("name"));
                        Log.d("FB", object.optString("link"));
                        Log.d("FB", object.optString("id"));
                        Log.d("FB", object.optString("email"));
                        Log.d("FB", object.optString("birthday"));
                        fbname[0] = object.optString("name");
                    }
                });
                // 包入你想要得到的資料 送出request
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,link,email,birthday,gender,picture");
                request.setParameters(parameters);
                request.executeAsync();
            // mProgress.dismiss();
            // successDialog("Login Successful", " Welcome to FaceT =] ");
            }

            @Override
            public void onCancel() {
            // dialog("Login Error Message","Login Cancel");
            // mProgress.dismiss();
            }

            @Override
            public void onError(FacebookException exception) {
            // dialog("Login Error Message",exception.getMessage());
            // mProgress.dismiss();
            }
        });
        mFacebookBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Facebook Login
                // mProgress.setMessage("Starting Sign in ...");
                // mProgress.show();
                LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
            }
        });
    }

    // protected void successDialog(String replacedle, String message) {
    // AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
    // builder.setMessage(message);
    // builder.setreplacedle(replacedle);
    // builder.setIcon(R.drawable.ic_person_black_24px);
    // builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    // @Override
    // public void onClick(DialogInterface dialog, int which) {
    // dialog.dismiss();
    // //                LoginActivity.this.finish();
    // }
    // });
    // builder.create().show();
    // }
    private void saveLoginData() {
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("LoginData", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        if (!mLoginEmailField.getText().toString().trim().equals("") || !mLoginPreplacedwordField.getText().toString().trim().equals("")) {
            editor.putString("email", mLoginEmailField.getText().toString());
            editor.putString("preplacedword", mLoginPreplacedwordField.getText().toString());
            editor.commit();
        }
    }

    @Override
    public boolean onSupportNavigateUp() {
        this.finish();
        return true;
    }

    private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        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);
            mProgress.setMessage("Starting Sign in ...");
            mProgress.show();
            if (result.isSuccess()) {
                // Google Sign In was successful, authenticate with Firebase
                GoogleSignInAccount account = result.getSignInAccount();
                firebaseAuthWithGoogle(account);
            // successDialog("Login Successful", " Welcome to FaceT =] ");
            } else {
                // Google Sign In failed, update UI appropriately
                // ...
                mProgress.dismiss();
            }
        }
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
        Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
        final AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                Log.d(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()) {
                    Log.w(TAG, "signInWithCredential", task.getException());
                    Toast.makeText(LoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                } else {
                    mProgress.dismiss();
                    Snackbar snackbar = Snackbar.make(activity_login_layout, "Login successfully", Snackbar.LENGTH_SHORT);
                    snackbar.show();
                    checkUserExist();
                }
            }
        });
    }

    protected void alertDialog(String replacedle, String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
        builder.setMessage(message);
        builder.setreplacedle(replacedle);
        builder.setIcon(R.drawable.ic_error_black_24px);
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            // LoginActivity.this.finish();
            }
        });
        builder.create().show();
    }

    private void handleFacebookAccessToken(AccessToken token) {
        Log.d(TAG, "handleFacebookAccessToken:" + token);
        final AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
        mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                Log.d(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()) {
                    Log.w(TAG, "signInWithCredential", task.getException());
                    Snackbar snackbar = Snackbar.make(activity_login_layout, "Authentication failed.", Snackbar.LENGTH_SHORT);
                    snackbar.show();
                } else {
                    Snackbar snackbar = Snackbar.make(activity_login_layout, "Login successfully", Snackbar.LENGTH_SHORT);
                    snackbar.show();
                    mProgress.dismiss();
                    checkUserExist();
                }
            }
        }).addOnFailureListener(new OnFailureListener() {

            @Override
            public void onFailure(@NonNull Exception e) {
                mProgress.dismiss();
                Snackbar snackbar = Snackbar.make(activity_login_layout, e.toString(), Snackbar.LENGTH_SHORT);
                snackbar.show();
            }
        });
    }

    private void checklogin() {
        String email = mLoginEmailField.getText().toString().trim();
        final String preplacedword = mLoginPreplacedwordField.getText().toString().trim();
        if (!TextUtils.isEmpty(email) && !TextUtils.isEmpty(preplacedword)) {
            mProgress.setMessage("Checking Login ...");
            mProgress.show();
            mAuth.signInWithEmailAndPreplacedword(email, preplacedword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        mProgress.dismiss();
                        // successDialog("Login Successful", " Welcome to FaceT =] ");
                        checkUserExist();
                    }
                }
            }).addOnFailureListener(new OnFailureListener() {

                @Override
                public void onFailure(@NonNull Exception e) {
                    mProgress.dismiss();
                    YoYo.with(Techniques.Shake).playOn(findViewById(R.id.loginemailfield));
                    YoYo.with(Techniques.Shake).playOn(findViewById(R.id.loginpreplacedwordfield));
                    YoYo.with(Techniques.Shake).playOn(findViewById(R.id.loginemailbg));
                    YoYo.with(Techniques.Shake).playOn(findViewById(R.id.loginpwbg));
                    // Log.d(TAG, e.toString() + " / " + e.getMessage() + " / " + e.getLocalizedMessage());
                    if (preplacedword.length() < 6) {
                        alertDialog("Login Error", "Preplacedword should be at least 6 characters");
                    } else {
                        String errorMsg = e.getMessage();
                        alertDialog("Login Error", errorMsg);
                    }
                }
            });
        }
    }

    private void checkUserExist() {
        if (mAuth.getCurrentUser() != null) {
            final String user_id = mAuth.getCurrentUser().getUid();
            mDatabaseUsers.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.hasChild(user_id)) {
                        // Intent mainIntent = new Intent(LoginActivity.this, MainActivity.clreplaced);
                        // //                        mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        // startActivity(mainIntent);
                        LoginActivity.this.finish();
                    } else {
                        Intent setupIntent = new Intent(LoginActivity.this, ProfileEditActivity.clreplaced);
                        // setupIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(setupIntent);
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
        }
    }

    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    public Action getIndexApiAction() {
        Thing object = new Thing.Builder().setName(// TODO: Define a replacedle for the content shown.
        "Login Page").setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]")).build();
        return new Action.Builder(Action.TYPE_VIEW).setObject(object).setActionStatus(Action.STATUS_TYPE_COMPLETED).build();
    }

    @Override
    public void onStart() {
        super.onStart();
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        mGoogleApiClient.connect();
        AppIndex.AppIndexApi.start(mGoogleApiClient, getIndexApiAction());
        mAuth.addAuthStateListener(mAuthListener);
    }

    @Override
    public void onStop() {
        super.onStop();
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        AppIndex.AppIndexApi.end(mGoogleApiClient, getIndexApiAction());
        mGoogleApiClient.disconnect();
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Logs 'app deactivate' App Event.
        AppEventsLogger.deactivateApp(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Logs 'install' and 'app activate' App Events.
        AppEventsLogger.activateApp(this);
    }
}

16 Source : LoginPresenter.java
with Apache License 2.0
from xujiaji

@Override
public void requestFacebook(LoginResult loginResult) {
    AccessToken accessToken = loginResult.getAccessToken();
    NetRequest.Instance().facebookLogin(accessToken.getUserId(), MD5Util.getMD5(accessToken.getUserId()), new NetRequest.RequestListener<User>() {

        @Override
        public void success(User user) {
            view.callLoginSuccess();
        }

        @Override
        public void error(String err) {
            view.callLoginFail(err);
        }
    });
}

16 Source : LoginActivity.java
with MIT License
from IramML

public clreplaced LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient googleApiClient;

    public static final int SIGN_IN_CODE_GOOGLE = 157;

    Button btnSignIn, btnLogIn;

    FirebaseHelper firebaseHelper;

    GoogleSignInAccount account;

    // facebook
    CallbackManager mFacebookCallbackManager;

    LoginManager mLoginManager;

    AccessToken accessToken = AccessToken.getCurrentAccessToken();

    boolean isLoggedIn = accessToken != null && !accessToken.isExpired();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        firebaseHelper = new FirebaseHelper(this);
        FancyButton signInButtonGoogle = findViewById(R.id.login_button_Google);
        FancyButton signInButtonFacebook = findViewById(R.id.facebookLogin);
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
        googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();
        signInButtonGoogle.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
                startActivityForResult(intent, SIGN_IN_CODE_GOOGLE);
            }
        });
        setupFacebookStuff();
        signInButtonFacebook.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (AccessToken.getCurrentAccessToken() != null) {
                    mLoginManager.logOut();
                } else {
                    mLoginManager.logInWithReadPermissions(LoginActivity.this, Arrays.asList("email", "user_birthday", "public_profile"));
                }
            }
        });
        btnSignIn = findViewById(R.id.btnSignin);
        btnLogIn = findViewById(R.id.btnLogin);
        btnSignIn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                firebaseHelper.showRegistrerDialog();
            }
        });
        btnLogIn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                firebaseHelper.showLoginDialog();
            }
        });
    }

    private void verifyGoogleAccount() {
        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(googleApiClient);
        if (opr.isDone()) {
            GoogleSignInResult result = opr.get();
            if (result.isSuccess())
                firebaseHelper.loginSuccess();
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (isLoggedIn) {
            startActivity(new Intent(LoginActivity.this, HomeActivity.clreplaced));
            finish();
        }
        verifyGoogleAccount();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == SIGN_IN_CODE_GOOGLE) {
            // Google
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
        mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            account = result.getSignInAccount();
            firebaseHelper.registerByGoogleAccount(account);
        } else {
            ShowMessage.messageError(this, Errors.ERROR_LOGIN_GOOGLE);
        }
    }

    private void setupFacebookStuff() {
        // This should normally be on your application clreplaced
        FacebookSdk.sdkInitialize(getApplicationContext());
        mLoginManager = LoginManager.getInstance();
        mFacebookCallbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                // login
                firebaseHelper.registerByFacebookAccount();
            }

            @Override
            public void onCancel() {
                Toast.makeText(LoginActivity.this, "The login was canceled", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(LoginActivity.this, "There was an error in the login", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        ShowMessage.messageError(this, Errors.ERROR_LOGIN_GOOGLE);
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {
    }
}

See More Examples