Skip to content Skip to sidebar Skip to footer

Facebook Login/google Login - Same Activity?

I am trying to give my users the option to sign in with either Google or Facebook. So far I found an example to implement a Google Sign in Flow, but I am confused if I can implemen

Solution 1:

set both fragments (facebook and google) in the layout that you use as login and in another to receive the session validated

<com.facebook.widget.LoginButton
    android:id="@+id/authButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp" />

<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"android:layout_below="@id/authButton"android:layout_width="wrap_content"android:layout_height="wrap_content" />

then use al functions required by each one

publicclassMainActivityextendsActivityimplementsConnectionCallbacks,OnConnectionFailedListener {
//googleprivatePlusClient plusClient;
privateSignInButton btnSignIn;
privateProgressDialog connectionProgressDialog;
privateConnectionResult connectionResult;
privatestatic final int REQUEST_CODE_RESOLVE_ERR = 9000;
//faceprivateLoginButton buttonLoginLogout;
privateUiLifecycleHelper uiHelper;
staticUsuario appusuario;
staticString urldelogin="algo";
privateSession.StatusCallback callback = newSession.StatusCallback() {
    @Overridepublicvoidcall(Session session, SessionState state, Exception exception) {
        onSessionStateChange(session, state, exception);
        if (session.isOpened()) {
            Log.e("usuario", "si hay sesion");
            // make request to the /me APIRequest.newMeRequest(session, newRequest.GraphUserCallback() {

                // callback after Graph API response with user object@OverridepublicvoidonCompleted(GraphUser user, Response response) {
                    if (user != null) {
                        Log.e("usuario", "si hay usuario");
                        buildUserInfoDisplay(user);
                        //start another activity
                        }
                }
            }).executeAsync();
        }
    }

    privatevoidonSessionStateChange(Session session, SessionState state,
            Exception exception) {
        // TODO Auto-generated method stub
    }
};


@OverridepublicvoidonResume() {
    super.onResume();
    uiHelper.onResume();
}   

@OverridepublicvoidonPause() {
    super.onPause();
    uiHelper.onPause();
}   

@OverridepublicvoidonActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_RESOLVE_ERR &&
            resultCode == RESULT_OK)
        {
            connectionResult = null;
            plusClient.connect();
        }
}   

@OverridepublicvoidonDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}   


@OverrideprotectedvoidonSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}
publicstaticvoidbuildUserInfoDisplay(GraphUser user) {

    appusuario=newUsuario(user.getName(),user.getUsername());
}

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    uiHelper = newUiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);
    buttonLoginLogout = (LoginButton)findViewById(R.id.authButton);
    buttonLoginLogout.setReadPermissions(Arrays.asList("user_status"));

    btnSignIn = (SignInButton)findViewById(R.id.sign_in_button);
    buttonLoginLogout.setVisibility(View.VISIBLE);
    btnSignIn.setVisibility(View.VISIBLE);
    plusClient = newPlusClient.Builder(this, this, this).setActions("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity")
            .build();

    connectionProgressDialog = newProgressDialog(this);
    connectionProgressDialog.setMessage("Conectando...");

    btnSignIn.setOnClickListener(newOnClickListener() {

        @OverridepublicvoidonClick(View view)
        {
            if (!plusClient.isConnected())
            {
                if (connectionResult == null)
                {
                    connectionProgressDialog.show();
                }
                else
                {
                    try
                    {
                        connectionResult.startResolutionForResult(
                            MainActivity.this,
                            REQUEST_CODE_RESOLVE_ERR);
                    }
                    catch (SendIntentException e)
                    {
                        connectionResult = null;
                        plusClient.connect();
                    }
                }
            }
        }
    });


}

@OverrideprotectedvoidonStart()
{
    super.onStart();
    plusClient.connect();
}

@OverrideprotectedvoidonStop()
{
    super.onStop();
    plusClient.disconnect();
}


@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);
    returntrue;

}

 @OverridepublicvoidonConnected(Bundle connectionHint)
    {
        connectionProgressDialog.dismiss();
        //nombreString accountName = plusClient.getAccountName();
       //cuenta con mailPerson accountperson=plusClient.getCurrentPerson();
        String personName = accountperson.getDisplayName();
        Log.e("Google +", "Conectado");
        //start another activity

    }

    @OverridepublicvoidonDisconnected()
    {
        Log.e("Google +", "Desconectado");
    }

    @OverridepublicvoidonConnectionFailed(ConnectionResult result) {
        // TODO Auto-generated method stubif (connectionProgressDialog.isShowing())
        {
            if (result.hasResolution())
            {
                try
                {
                    result.startResolutionForResult(this,
                        REQUEST_CODE_RESOLVE_ERR);
                }
                catch (SendIntentException e)
                {
                    plusClient.connect();
                }
            }
        }
        connectionResult = result;

    }
      }

in the new activity place the same functions to validate the sesion and use

if (session.isOpened()) { }

to hide google login button or

publicvoidonConnected(Bundle connectionHint)
    {

    }

to hide facebook login button

Post a Comment for "Facebook Login/google Login - Same Activity?"