Crear login Android (webservice) y traer el ID del usuario

77 views
Skip to first unread message

Alexander Andrade

unread,
Sep 20, 2015, 9:07:45 AM9/20/15
to desarrolladores-android
Hola amigos, les cuento que estoy haciendo una mini app, y estoy creando una pantalla de login, en donde tengo en MYSQL la siguiente  tabla:

++++++++++++++++++
+      Tabla Usuario      +
++++++++++++++++++
+    id                          +
+    nombre                  +
+    telefono                 +
+    username              +
+    password               +
+                                 +
++++++++++++++++++

Ese codigo de PHP, en donde valido el username y password:

<?php
$con = mysqli_connect(HOST,USER,PASS,DB);
 
$username = $_POST['username'];
$password = $_POST['password'];
 
$sql = "SELECT * from Usuario WHERE username='$username' and password='$password'";
 
$res = mysqli_query($con,$sql);
 
$check = mysqli_fetch_array($res);
 
if(isset($check)){
echo 'success';
}else{
echo 'failure';
}
 
mysqli_close($con);
?>

Y este codigo Android:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity{

private EditText editTextUserName;
    private EditText editTextPassword;
    public static final String USER_NAME = "USERNAME";
    //public static final String USER_ID = "ID";
    String username;
    String password;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        setContentView(R.layout.activity_login);   
        
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayUseLogoEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#588300")));
        
     // Instanciar elementos 
        Button btIrCrear = (Button) findViewById(R.id.btIrCrear);
        Button btIrLogin = (Button) findViewById(R.id.button);
        editTextUserName = (EditText) findViewById(R.id.editTextUserName);
        editTextPassword = (EditText) findViewById(R.id.editTextPassword);   
              
     // Accion del crear cuenta
     btIrCrear.setOnClickListener(new OnClickListener() {
     //@Override
     public void onClick(View v) {
     Intent intent = new Intent(LoginActivity.this, CreateAccountActivity.class);
     startActivity(intent);
     }
     });
}// end onCreate
//boton atras
public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
    startActivityForResult(myIntent, 0);
    return true;
}
public void invokeLogin(View view){
        username = editTextUserName.getText().toString();
        password = editTextPassword.getText().toString();
        login(username,password);
    }
private void login(final String username, String password) {
        class LoginAsync extends AsyncTask<String, Void, String>{
            private Dialog loadingDialog;
 
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loadingDialog = ProgressDialog.show(LoginActivity.this, "Porfavor espere", "Cargando...");
            }
            
            @Override
            protected String doInBackground(String... params) {
            
             String uname = params[0];
                String pass = params[1];
                
                InputStream is = null;
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("username", uname));
                nameValuePairs.add(new BasicNameValuePair("password", pass));
                               
                String result = null;
 
                try{
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost httpPost = new HttpPost("http://www.andratec.cl/estoyperdido/login.php");
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpClient.execute(httpPost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                     
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();
 
                    String line = null;
                    while ((line = reader.readLine()) != null)
                    {
                        sb.append(line + "\n");
                    }
                                
                    result = sb.toString();
                    
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return result;
            }
 
            @Override
            protected void onPostExecute(String result){
                String s = result.trim();              
                loadingDialog.dismiss();
                
                //verificamos los campos vacios
                String vuser = editTextUserName.getText().toString();
      String vpass = editTextPassword.getText().toString();
     
      if(TextUtils.isEmpty(vuser)) {
      editTextUserName.setError("Debe ingresar e-mail de su cuenta");     
      return;
   }
  if(TextUtils.isEmpty(vpass)) {
  editTextPassword.setError("Debe ingresar contraseña de su cuenta");
      return;
   }             
                if(s.equalsIgnoreCase("success")){
                    Intent intent = new Intent(LoginActivity.this, createPostActivity.class);
                    intent.putExtra(USER_NAME, username);
                    finish();
                    startActivity(intent);
                }else {
                    Toast.makeText(getApplicationContext(), "Email o Contraseña son incorrectos", Toast.LENGTH_LONG).show();
                }
            }
        }      
        LoginAsync la = new LoginAsync();
        la.execute(username, password); 
    }
}


Ahora mi consulta es que el login funciona bien, pero necesito saber como puedo traer el ID del usuario y guardarlo en una variable dentro del código.

Gracias.

Leandro Jourdan

unread,
Oct 27, 2015, 10:42:58 AM10/27/15
to desarrolladores-android
Hola Alexander Andrade! El ID del usuario te lo debe devolver el servidor! o sea en el caso que vos planteas, lo debe devolver el archivo de php mediante echo, o sea en vez de devolver echo 'success' deberias realizar una consulta en el php y devolver echo 'ID_Usuario' y tomas la respuesta en la clase de android. 
Espero te sirva la info!

Saludos
Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages