Одним из моих увлечений является написание небольших программ под Android. Дабы не забыть,да не потерять выкладываю сниппет авторизации мобильного приложения с неким сайтом. Для этого необходимо использовать AsyncTask.
private void connectWithHttpGet(String givenUsername, String givenPassword) {
class HttpGetAsyncTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
String paramUsername = params[0];
String paramPassword = params[1];
System.out.println("paramUsername is :" + paramUsername + " paramPassword is :" + paramPassword);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("site.com/script.php?cmd=auth&login=" + paramUsername + "&pass=" + paramPassword);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
System.out.println("httpResponse");
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while((bufferedStrChunk = bufferedReader.readLine()) != null){
stringBuilder.append(bufferedStrChunk);
}
System.out.println("Returning value of doInBackground :" + stringBuilder.toString());
return stringBuilder.toString();
} catch (ClientProtocolException cpe) {
System.out.println("Exception generates caz of httpResponse :" + cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out.println("Second exception generates caz of httpResponse :" + ioe);
ioe.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
CheckBox checkboxColor;
checkboxColor = (CheckBox)findViewById(R.id.checkBox1);
if(result.equals("ok")){
Toast.makeText(getApplicationContext(), "Авторизация успешна...", Toast.LENGTH_LONG).show();
if(checkboxColor.isChecked()){
Toast.makeText(getApplicationContext(), "Запоминаем пароль", Toast.LENGTH_LONG).show();
saveText();
}
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("login", usernameEditText.getText().toString());
intent.putExtra("password", passwordEditText.getText().toString());
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(), "Ошибка авторизации...", Toast.LENGTH_LONG).show();
}
}
}
HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask();
httpGetAsyncTask.execute(givenUsername, givenPassword);
}
}
Далее нам необходимо выполнить этот AsyncTask, для этого вызываем его где-нибудь в основном коде программы(например по клику кнопки Login):
connectWithHttpGet(givenUsername, givenPassword);
Скрипт на сайте считывает запросы от мобильного приложения,переданные методом GET, в ответ скрипт проверяет есть ли такой пользователь и если да,то передает сообщение «ok». Приложение считывает ответ от скрипта и если тот равен «ok» выполняет определенные действия,например-переходим в другое activity, передав значения логина и пароля. Если нет,то выводится соответствующее сообщение. Обращаю Ваше внимание,что передача запросов методом GET не безопасна и требует либо шифрования,либо передачи запросов методом POST, хотя против лома нет приема,если нет другого лома…
В дополнение добавлю небольшой сниппет,который позволяет вывести uid телефона(imei по сути) + идентификатор сим-карты:
TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String uuid = tManager.getDeviceId();
String simNumber= tManager.getSimSerialNumber();
Toast.makeText(getApplicationContext(),"UUID-"+uuid+",SIM id-"+simNumber, Toast.LENGTH_LONG).show();