Android сниппет авторизации на сайте плюс плюшки

Одним из моих увлечений является написание небольших программ под 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();

Понравилась статья? Поделиться с друзьями: