Аутентификация OAuth2 в приложении посредством Google Sign-In. Непрерывный доступ к API Google

Инструмент 25.04.2019
Инструмент
8 июля 2014 в 00:53 Авторизация через Google в Android и проверка токена на сервере
  • Разработка под Android
  • Recovery Mode

Недавно мне захотелось создать личный проект на андроиде, и основной вопрос был такой: как однозначно идентифицировать пользователя заставляя его делать как можно меньше телодвижений? Конечно же это аккаунт Google. Я пытался пробовать множество примеров в сети - однако API несколько раз обновилось за время своего существования, многие методы не работали, мои вопросы в Google+ по этому поводу либо были вообще никак не восприняты окружением, либо были вроде «Никогда такое не делал».
В этой статье я постараюсь как можно более просто для новичков (вроде меня) описать мой метод авторизации в Google на андроид, получения токена и проверке этого самого токена на сервере.

Небольшая подготовка Для начала - у вас должны быть установлены Google Play Services в SDK. После их установки можно будет импортировать все необходимые библиотеки. Статья пишется с расчетом на Android Studio - он сам подсказывает, что необходимо импортировать.
У вас должно быть создано активити с кнопкой.
Чтобы было привычнее пользователю можете создать стандартную кнопку Google+ Sing-In
Выглядеть она будет вот так:

Просто добавьте в ваш Layout:

Добавляем действие на кнопку Пишем в нашем активити:
View btn = (View) findViewById(R.id.sign_in_button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String{"com.google"}, false, null, null, null, null); startActivityForResult(intent, 123); } });
Собственно присвоим кнопке действие - вызов интенда выбора аккаунта. Если вы работаете в Android Studio он сам вам подскажет, какие библиотеки нужно импортировать, так что это подробно тут я расписывать не буду.
startActivityForResult(intent, 123); - задает код с которым произойдет возврат. 123 это код возврата, он может быть каким угодно. Это необходимо, когда вы делаете несколько интендов, и вам надо обработать их по разному.Необходимые области доступа Обьявите эти переменные в классе. Это необходимые нам области доступа. Первый написано в google: «Позволяет определить аутентифицированного пользователя. Для этого при вызове API необходимо указать me вместо идентификатора пользователя Google+. » Второе разрешение нам необходимо для получения личных данных пользователя (Имя, Фамилия, адрес G+ страницы, аватар), и последнее для получения E-mail. Я посчитал это важным, ведь это вполне неизменный идентификатор для записи в бд.
private final static String G_PLUS_SCOPE = "oauth2:https://www.googleapis.com/auth/plus.me"; private final static String USERINFO_SCOPE = "https://www.googleapis.com/auth/userinfo.profile"; private final static String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email"; private final static String SCOPES = G_PLUS_SCOPE + " " + USERINFO_SCOPE + " " + EMAIL_SCOPE; Регистрация нашего приложения. Изначально забыл этот пункт - исправляюсь.
Нам необходимо зайти на code.google.com/apis/console создать там проект, зайти в Credentials и создать новый Client ID для OAuth выбрав пункт Installed Application -> Android. Там нам необходимо ввести название нашего пакета и SHA1 сумму нашего ключа.
С этим у меня на самом деле было много проблем решил достаточно костыльным способом.
Нашел debug.keystore в %USERPROFILE%\.android\debug.keystore поместил в папку с проектом и прописал в build.grandle:

SigningConfigs { debug { storeFile file("debug.keystore") } myConfig { storeFile file("debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }
После чего нам нужно выполнить команду:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -v -list
Сам keytool можно найти в SDK. Из вывода копируем SHA1 в нужное поле.
Как я понимаю метод временный, и для нормальной работы надо создать нормальный ключ. Но для тестирования этого достаточно.

Код получения токена protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { if (requestCode == 123 && resultCode == RESULT_OK) { final String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); AsyncTask getToken = new AsyncTask() { @Override protected String doInBackground(Void... params) { try { String token = GoogleAuthUtil.getToken(AcrivityName.this, accountName, SCOPES); return token; } catch (UserRecoverableAuthException userAuthEx) { startActivityForResult(userAuthEx.getIntent(), 123); } catch (IOException ioEx) { Log.d(TAG, "IOException"); } catch (GoogleAuthException fatalAuthEx) { Log.d(TAG, "Fatal Authorization Exception" + fatalAuthEx.getLocalizedMessage()); } return token; } @Override protected void onPostExecute(String token) { reg(token); } }; getToken.execute(null, null, null); } }
Где 123 - ваш код, который вы указали ранее, где AcrivityName - название вашего актитивити. Грубо говоря - мы скармливаем функции получения токена необходимые разрешения и имя аккаунта. И заметьте - это все происходит в фоновом режиме, после чего полученный токен передается в написанную мною функцию reg. Она уже отправляет токен и все необходимые данные на сервер.
Так как разрабатываю недавно, с исключениями пока что беда, если есть предложение - напишите в личку или в комментарии.Проверяем токен на сервере. (PHP) Хочу обратить внимание, полученный нами токен имеет тип Online. И действует он лишь 10 минут. Для получения offline токена (чтобы дольше работать с ним с сервера) обратитесь к этой инструкции «С 20 апреля 2017 года отправка запросов на авторизацию из встроенных браузеров будет блокироваться». Такое сообщение с 1 марта можно увидеть в некоторых приложениях, где необходима авторизация. Об этом Google написали в своём блоге еще в августе 2016, и это значит, что скоро во многих приложениях придется переписывать реализацию регистрации. Приятного мало, однако выход есть – использовать рекомендуемый способ авторизации Google Sign-in.

Об этом способе и будет идти речь в уроке, а также как получить токены, необходимые для работы с API Google.

В уроке будет присутствовать частичный перевод официальных документаций. Но сперва немного предыстории из моей практики и первой работы с OAuth2, возможно кто-то окажется в похожей ситуации.

Понадобилось мне для приложения получить чат с прямой трансляции YouTube. И тогда я узнала, что для отправки запросов на получение трансляции (и только потом чата) необходимо провести OAuth2 аутентификацию пользователя. Я начала искать. Информации по такой теме очень мало, она разрознена, не подходила для моего случая, и конечно же всё было на английском языке. В основном информация была для работы с наиболее популярными API: Drive, Cloud, Google Plus. В официальной документации API YouTube есть готовый код, бери да пользуйся, однако для Android он не подходит. Потратив немалое количество времени, методом проб и ошибок я пришла к рабочему решению. Первое, что мне захотелось сделать после, это собрать информацию «в кучу» и разложить по полочкам, что и сподвигло на написание этого урока.

Изначально моё решение начиналось с того, что перед пользователем открывался WebView для авторизации (ввод email, пароля). Далее запрашивалось разрешение на использование данных, и только после разрешения в ответе приходил код аутентификации (AuthCode), подробнее что с ним делать будет далее. Url, который открывался в WebView был следующий:

Https://accounts.google.com/o/oauth2/auth? client_id=60*********5ad3np.apps.googleusercontent.com &redirect_uri=urn:ietf:wg:oauth:2.0:oob &access_type=offline&response_type=code &scope=https://www.googleapis.com/auth/youtube.readonly
Это ни что иное, как post запрос, в ответ на который приходила страница, содержащая authCode, причем код был в заголовке страницы. Всё, как по рекомендации к API, а действия для сокрытия этого кода от пользователя оставили на разработчика.

Перейдя по ссылке «Подробнее» попадаем в блог, где сказано, что во имя безопасности, аутентификация через WebView работать не будет с 20 апреля. Ну вот, думаю я, только сделала и придется переделывать через Sign-In. Причем первоначально я пыталась сделать реализацию именно через этот сервис. Однако с уже имеющимися знаниями «что и зачем» получилось довольно быстро. И так, начнем.

1. Получение учетных данных

В Диспетчере API создаем новый проект (или выбираем существующий):


Для авторизации понадобится файл конфигурации, который можно получить в мастере :


Заполняем поля название приложения и пакет. Далее выбираем какой сервис подключаем (Google Sign-In), здесь нужно ввести SHA1 ключ приложения, получить его просто: в Android Studio находим вкладку Gradle, раскрываем вкладки Tasks-android-signingReport. Щелкаем два раза, и в логах появится информация о ключах. Находим ключ SHA1, копируем.



Жмем кнопку «Generate configuration file», а после «Download google-services.json». Этот файл json сохраняем в папку проекта «app».

Важно! Если вы собираетесь публиковать приложение в Google Play, debug ключ SHA1 нужно будет заменить на release ключ, соответственно и заменить файл конфигурации.

Заходим в Диспетчер API, видим, что сгенерировались ключи и идентификаторы клиентов OAuth. Нам понадобятся только данные Web client (идентификатор клиента и секрет клиента).


Во вкладке «Окно запроса доступа OAuth» можно поменять email и название продукта - это то, что будет написано, когда будет запрашиваться разрешение «Приложение **** запрашивает: …»

2. Настройка Sign-In клиента

Чтобы получить доступ к Google Api Client, в файл gradle app нужно добавить в зависимости:

Compile "com.google.android.gms:play-services-auth:10.2.0"
И плагин (в конец файла):

Apply plugin: "com.google.gms.google-services"
В файл gradle project в зависимости:

Classpath "com.google.gms:google-services:3.0.0"
Настраиваем опции:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestServerAuthCode(getString(R.string.server_client_id)) .requestEmail() .requestScopes(new Scope("https://www.googleapis.com/auth/youtube.readonly")) .build();
Здесь наибольший интерес вызывают строки:

RequestServerAuthCode(getString(R.string.server_client_id)) – запрашиваем authCode, передавая параметр идентификатор клиента (весь полностью), который получили выше.

RequestScopes(new Scope("***")) – запрашиваем необходимую для используемого API область/области доступа. Есть некоторые уже определенные области в Scopes, но, если нужной там не нашлось, можно задать свою, как в моём случае. Для пользователя будет отображаться как доступ «к чему» хочет получить приложение.

Настраиваем клиент:

GoogleApiClient mApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, this) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build();
Тут всё по стандарту из документации:

EnableAutoManage(this, this) – в параметры передается активити и слушатель соединения (реализуем интерфейс GoogleApiClient.OnConnectionFailedListener).

AddApi(Auth.GOOGLE_SIGN_IN_API, gso) – указываем, что используем Sign In api и ранее созданный объект опций.


Выглядит она так:

В активити кнопка определяется как и все другие view, на нее повешаем слушатель и по клику выполним метод:

@Override public void onClick(View view) { switch (view.getId()) { case R.id.activity_button_sign_in: signIn(); break; } }
Код вызываемого метода представляет собой создание интента и вызов активити для авторизации:

Public void signIn() { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mApiClient); startActivityForResult(signInIntent, RC_AUTH_CODE); }
В параметр передаем сконфигурированный mApiClient. RC_AUTH_CODE любое число, как и всегда, для отслеживания результата активити.

При нажатии на копку, будет предложено выбрать аккаунт для входа, либо добавить новый. После выбора, приложение запросит разрешение:


3. Получение Auth code

После того, как пользователь даст разрешение, в onActivityResult получаем данные его аккаунта:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_AUTH_CODE) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()) { GoogleSignInAccount acct = result.getSignInAccount(); String authCode = acct.getServerAuthCode(); getAccessToken(authCode); } } }
В результате получаем auth code как обычную строку, выглядит он примерно так:

4/iHhVmqtxccXh0Qs*********oo5XG8OjaNsWu_kEKyw
Так же из аккаунта можно получить email пользователя, username и аватарку:

Acct.getEmail()
acct.getDisplayName()
acct.getPhotoUrl()

Эти данные могут понадобиться, например, чтобы вставить их в header NavigationView.

4. Получение Access Token и Refresh Token

Получили auth code, теперь его нужно поменять на необходимые для запросов к API токены. Для этого формируем запрос по адресу https://www.googleapis.com/oauth2/v4/token. Например я сделаю это с помощью OkHttp.

Public void getAccessToken(String authCode) { OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new FormEncodingBuilder() .add("grant_type", "authorization_code") .add("client_id", getString(R.string.server_client_id)) .add("client_secret", getString(R.string.client_secret)) .add("code", authCode) .build(); final Request request = new Request.Builder() .url("https://www.googleapis.com/oauth2/v4/token") .header("Content-Type", "application/x-www-form-urlencoded") .post(requestBody) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) {} @Override public void onResponse(Response response) throws IOException { try { JSONObject jsonObject = new JSONObject(response.body().string()); mAccessToken = jsonObject.get("access_token").toString(); mTokenType = jsonObject.get("token_type").toString(); mRefreshToken = jsonObject.get("refresh_token").toString(); } catch (JSONException e) { e.printStackTrace(); } } }); }
Рассмотрим подробнее параметры. В Request.Builder() Передаем url по которому получаем токены:

Url("https://www.googleapis.com/oauth2/v4/token")
В header указываем Content-Type:

Header("Content-Type", "application/x-www-form-urlencoded")
Указываем, что это метод POST, в него передаем body:

Post(requestBody)
Сформированный requestBody обязательно должен содержать параметры:

"grant_type", "authorization_code" – указываем, что передавать будем auth code
"client_id", getString(R.string.server_client_id) – параметр является client id, полученный в Диспетчере API
"client_secret", getString(R.string.client_secret) - секрет клиента, полученный в Диспетчере API
"code", authCode – собственно полученный код.

Запрос асинхронный, в ответе получаем обычный json со всеми нужными для работы данными:

{ "access_token":"ya29.GlsfBJNMTfGy…", "token_type":"Bearer", "expires_in":3600, "refresh_token":"1\/72OqA7zYuyY__XhGij5oA2nEb7…", "id_token":"eyJhbGciOiJSUzI1NiIsImtpZ…" }
"access_token" – токен доступа, ради которого всё проводилось
"expires_in" – время жизни access токена, по умолчанию токен живет 1 час, а в сутки можно получать по запросу 25 токенов, не более.
"token_type" – тип токена, его тоже необходимо запомнить, он также вставляется в запрос к api в дальнейшем.
"refresh_token" – токен для обновления access токена, когда пройдет час жизни. Refresh токен неизменен. Часто на форумах видела проблему, с которой сталкивалась и сама: в запросе не приходил этот токен. Ошибки заключаются в неправильном получении учетных данных, либо неправильные запросы. Если авторизация проводилась через WebView, и в url не указывался такой важный параметр как access_type=offline, то refresh токен попросту не приходил.

5. Обновление Access токена

Час прошел, access токен больше не активен, необходим новый. После этого посыпятся ошибки 401 или 403, сервер скажет, что пользователь не авторизован или не имеет доступа. Запрашивать новое разрешение не годится, если нам нужна непрерывная сессия, например как у меня, нужно непрерывно получать сообщения из чата в течении трансляции, а это несколько часов. Что делать? Посылать запрос на получение нового токена.

Запрос в основном такой же как в пункте 4, за исключением некоторых параметров:

Private void getNewAccessToken() { OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new FormEncodingBuilder() .add("refresh_token", mRefreshToken) .add("client_id", getString(R.string.server_client_id)) .add("client_secret", getString(R.string.client_secret)) .add("grant_type", "refresh_token") .build(); final Request request = new Request.Builder() .url("https://www.googleapis.com/oauth2/v4/token") .header("Content-Type", "application/x-www-form-urlencoded") .post(requestBody) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) {} @Override public void onResponse(Response response) throws IOException { try { JSONObject jsonObject = new JSONObject(response.body().string()); mAccessToken = jsonObject.get("access_token").toString(); } catch (JSONException e) { e.printStackTrace(); } } }); }
Здесь важные параметры:

"grant_type", "refresh_token" – в типе указываем что посылаем refresh токен
"refresh_token", mRefreshToken – и сам токен

Ответом будет json, содержащий новый access токен, с которым снова можно обращаться к API:

{ "access_token":"ya29.GlsfBM7Y...", "token_type":"Bearer", "expires_in":3600, "id_token":"eyJhbGciOiJ..." }
На этом авторизация и аутентификация пользователя завершена.

Для примера покажу как выглядит запрос к API, а также как я выполняю обновление токена.
Для запроса к API я использую Retrofit2 + RxAndroid. Так выглядит запрос на получение чата прямой трансляции:

@GET(GoogleApiUrls.Youtube.CHAT) Observable getChat(@Header("Authorization") String token, @Query("liveChatId") String liveChatId, @Query("part") String part);
Здесь важно заметить, что в header по ключу Authorization должны передаваться тип токена и сам access токен. То есть так:

Authorization Bearer ya29.GlsfBJNMTfGy…
Далее делаю запрос через RxAndroid, и так как в коллбэк onError приходят всевозможные ошибки, то туда же приходит ошибка HttpException с кодом 401 Unauthorized по истечении часа. Здесь же я обрабатываю её, проверяю, если это та самая ошибка, то привожу к соответствующему типу, проверяю действительно ли это код 401 и выполняю метод получения нового токена, затем повторяю запрос.

@Override public void onError(Throwable e) { if (e instanceof HttpException) { HttpException exception = (HttpException) e; if (exception.code() == 401) { getNewAccessToken(); } } }
Так же для проверки токена существует GET запрос:

Https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=ya29.GlsfBJNMTfGy…
В ответ придут данные о токене, если он еще активен, либо ошибка, если его время жизни истекло.

Опять же, реализацию обновления токена Google оставляет на разработчика.

Рекомендую перед началом работы проверять запросы в стороннем приложении/расширении, например Postman, чтобы убедиться в правильности ввода параметров и полученных ответах. Я буду очень рада, если кому-то урок окажется полезным!

Здравствуйте, уважаемые читатели блога сайт. Сегодня я хочу поговорить про такую, ставшую уже обыденной, вещь, как Google Account , который имеют на данный момент подавляющее большинство пользователей интернета ( , я думаю объяснять не требуется).

Особенно актуально это стало после феноменального и мобильных устройств на базе Андроида.

В первом случае, аккаунт позволяет синхронизировать закладки, пароли и прочие индивидуальные настройки Хрома с таким же браузером на другом компьютере или мобильном устройстве (смартфоне или планшете). Ну, а в случае с Андроидом, он позволяет получить доступ к святая-святых — Гугл Плей.

И в качестве очень полезного бонуса в довесок к заведению аккаунта вы получаете , который сейчас можно считать одним из самых удобных и надежных в мире.

Зачем нужен, насколько удобен и безопасен аккаунт в Гугле

На данный момент аккаунт требуется для работы не со всеми , но, скорее всего, вам его завести все же придется, ибо слишком много приятных плюшек приготовила для нас эта корпорация и слишком уж вкусно она их подает.

Например, одновременно с регистрацией нового акка вы получаете еще в догонку и бесплатный почтовый ящик, который будет заканчиваться на @gmail.com, хотя в некоторых частных случаях можно будет обойтись и без этого довеска. Но еще раз подчеркну, что безопасность сейчас все больше и больше превалирует над ее прочими характеристиками.

Как я уже писал в обзорах по и , особенно сильного разрыва между их функционалом и функционалом Гмайла уже не существует, но по вопросам безопасности аккаунт Google (который и определяет степень защищенности ящика) по-прежнему серьезно превосходит все имеющиеся на данный момент аналоги.

Кто-то из вас может возразить, что, мол, безопасность ему не так важна, ибо ничего ценного в ящике у него никогда не хранится. Ну, тут у меня есть что возразить, ибо взлом почты лишь в малых количествах случаев происходит целенаправленно.

Обычно взлом аккаунта ведется с помощью программных средств, которые методом перебора и использования специальных словарей пытаются вскрыть как можно большее число почтовых ящиков со следующими целями:

  • Последующей перепродажей их спаммерам для использования в понятно каких целях.
  • Поиском в почтовых ящиках акков от соцсетей и прочих интересных (возможно и ) сервисов, которые, имея доступ к ящику, можно будет спокойно взломать (если пароля среди вашей корреспонденции не найдется) и перепродать оптом тем, кому все это богатство жизненно необходимо.
  • Банальный шантаж тоже никто не отменял, и для того, чтобы вернуть ящик со своими личными данными (и, возможно, тайнами), вас попросят заплатить.
  • Ну, и самый редкий случай, когда вас ломать будут целенаправленно и профессионально, по чьей-либо наводке или же благодаря вашим необдуманных действиям и высказываниям в сети интернет. В этом случае, пожалуй, только двойная верификация сможет оказать достойное сопротивление взломщикам.
  • Как связать все ваши устройства на Андроиде и браузеры Хром воедино

    Отлично. Про безопасность поговорили, теперь давайте поговорим за удобства, которые даст вам акк в Google, если вы потрудитесь его создать и, что важно, настроить. Стоит напомнить, что всеми нами любимая платформа Андроид получит возможность синхронизировать данные между разными имеющимися в вашем распоряжении устройствами, на которых вы работаете под одним акком.

    Допустим, что это планшет и телефон, куда вы при помощи Google Play установили много всего интересного и нужного. После активации подобной синхронизации вы сможете начать игру на планшете, а продолжить ее уже в дороге на своем мобильном телефоне (естественно, на Андроиде и под тем же аккаунтом).

    То же самое касается и фильмов — закончили его смотреть на телефоне, а завтра продолжили с того же места, но уже на планшете. Да и поменять телефон без потери всего на нем имеющегося станет плевым делом. Это совсем скорое будущее.

    Так же можно работать с браузером Гугл Хром на любом компьютере или мобильном устройстве в мире, имея в наличии все свои закладки, пароли, сохраненные данные форм, открытые вкладки и даже , которые были установлены и синхронизированы.

    Для подобной синхронизации достаточно будет подключиться к нужному акку Google в самом верху страницы настроек Хрома), а посмотреть, что именно и в каком количестве у вас сейчас синхронизируется, можно будет по этой ссылке :

    Правда мобильные версии этого браузера еще не столь совершенны (расширения не поддерживаются, например), но это всего лишь вопрос времени.

    Какие сервисы Гугла требуют вход через аккаунт

    Доступ можно будет восстановить даже если вы удалили свой аккаунт . Правда, тут важен фактор времени. Если удаление произошло недавно (например, вы случайно это сделали), то его без проблем можно будет восстановить.

    Порядок действий тот же. Начинаете со страницы accounts.google.com/signin/recovery используя инструкцию по ее использованию .

    Ну, и видео на тему, как пройти процесс восстановления с мобильного телефона (очевидно работающего на Андроиде, ибо там без акка в Гугле вообще делать нечего — ни в Плей Маркет зайти, ни Хром синхронизировать, ни почту посмотреть):

    Ищем проблемы с защитой входа в ваш аккаунт?

    В новом дизайне главной страницы Accounts.google.com немного сбивает с толку отсутствие левого меню, но оно появится как только вы выберите один из трех основных разделов: «Безопасный вход», «Конфиденциальность» или «Настройки»:

    Давайте начнем с безопасности входа . На открывшейся странице, кстати, левое меню появляется и навигация станет более прозрачной:

    На главной странице этого раздела вам предложат воспользоваться услугами мастера проверки безопасности входа конкретно в ваш акк, просто нажав на кнопку «Начать». Весьма полезная штука, позволяющая выявить все слабые места защиты входа в ваше святая святых:

    Но мы, как вы уже поняли, легких путей не ищем, а посему пробежимся в «ручном режиме» по основным «жизненно важным» настройкам.

    Давайте начнем с вкладки левого меню «Вход в аккаунт» .

    4 лучших способа защиты входа в Google аккаунт
  • Если регистрировались вы уже очень давно и там у вас архипростой , то не примените его поменять , нажав на соответствующую стрелочку в верху страницы с настройками безопасности входа (напротив слова «пароль)». Обратите внимание на некую паранойю, которая связана с постоянным вводом пароля при попытке изменения настроек безопасности аккаунта, но мера эта вынужденная, хотя и сильно раздражающая.
  • Любой пароль можно либо взломать, либо получить его хитростью, поэтому загодя подстелите соломки на случай, если доступ к своему акку вам придется восстанавливать. Упростить это действо можно будет, нажав в области «Параметры восстановления аккаунта» на стрелочки в нужных местах, чтобы указать на открывшейся странице номер своего мобильника или же резервный Емайл, куда вам смогут скинуть код восстановления. Лучше, конечно же, будет использовать оба варианта.
  • Но это всего лишь полумеры, которые вам помогут уже после того, как негодяй своими грязными руками покопается в вашем чистом белье (почте). Однако, существует способ, который с очень высокой долей вероятности позволяет избежать сего позора и защитить ваш акк от грязных посягательств. Это страшное оружие называется " " и по умолчанию она не активна.

    Причем, при первом входе со своего компьютера такую канитель разводить придется, а вот чтобы потом к вам не приставали с этими кодами из СМСок, достаточно будет поставить галочку , говорящую о том, что этому компьютеру вы доверяете (запомнить на этом компьютере).

    После этого для входа будет достаточно одного пароля.

  • А вот для почтовых клиентов и мобильных устройств придется создавать в своем аккаунте специальные пароли для приложений . Для каждого приложения этот пароль будет уникальный, но повозиться с их созданием и сменой в настройках программ придется. Хотя оно того, конечно же, стоит, ибо вы получаете в замен несравненно более высокий уровень защищенности от взлома. Это была теория, а теперь давайте переходить к практике.

    Хотите, не хотите, но открывать данную вкладку вам, скорее всего, все равно придется, ибо без этого многие мобильные устройства и десктопные приложения не смогут получить доступ к вашему акку после активации двухэтапной аутентификации, т.к. основного пароля для этого будет теперь не достаточно, а точнее он работать попросту не будет.

    Выбираем сначала из выпадающего списка приложение Google, в которое требуется войти (почта, ютуб или другое), затем из второго списка выбираем устройство, с которого требуется осуществить вход, и жмем на кнопку «Создать ». В результате вы получите пароль для этого приложения и инструкции по его применению:

    Записывать его или уж тем более запоминать не стоит, ибо проще будет задать новый. Неудобно только то, что для каждого приложения эту процедуру придется повторять.

  • Двухэтапная аутентификация при входе в аккаунт

    По умолчанию это очень важная настройка будет отключена. Для ее актвации нужно перейти на вкладку " " из левого меню (либо аналогичный пункт с главной страницы настроек — см. скриншот выше):

    После нажатия стрелочки в области «Двухэтапная аутентификация» вам покажут аргументы «за», а для продолжения нужно будет нажать на кнопку "Начать " .

    На первом шаге вам потребуется указать номер сотового телефона, на который будут приходить СМСки или голосовые сообщения (по вашему выбору) с кодами подтверждения для входа в аккаунт Гугла.

    Вводите код пришедший на телефон:

    После его ввода вас поздравят и предложат таки наконец включить эту саму двухэтапную аутентификацию для входа в ваш акк Гугла:

    После этого перед вами откроется страница с бесконечными возможностями по расширению и углублению безопасности работы со своим google account.


    В общем-то есть некоторые сложности с активаций двухэтапной аутентификации, но в целом оно того, конечно же, стоит.

    10 секретов вашего Гугл Аккаунта, о которых вы не знали
  • В настройках безопасности на вкладке "Вход в акк Гугла " вы можете посмотреть уведомления о подозрительных входах в ваш аккаунт или о попытках сменить пароль, а так же прочих критических ситуациях с безопасностью.

    Тут же можно будет взглянуть на последние действия с вашим акком (вдруг не вы одни уже им пользуетесь) и посмотреть с каких устройств и когда в него заходили.

    Если двухэтапную аутентификацию вы не активировали, то в отчетах наиболее любопытными с точки зрения безопасности и целостности будут последние действия в вашем акке и устройства, с которых производился вход. Если там отображаются гаджеты или операционные системы, под которыми вы никак не могли осуществлять вход, то это повод серьезно задуматься о настройках безопасности (как минимум — о смене пароля на более сложный).

  • Еще более детально посмотреть все ваши действия в сервисах Гугла вы сможете уже в разделе «Конфиденциальность», а именно — "Действия в сервисах Google " . Если вы не отключали в настройках «Отслеживание действий » историю приложений и веб-поиска, историю местоположений, историю ютуба и т.п., то там можно будет найти все (буквально все).

    Реально помогает иногда вспомнить «где был я вчера» и что именно такое нашел, что теперь найти никак не могу. Да, не спорю, не здорово когда за тобой следят, но следить будут по-любому, а вот воспользоваться для своей пользы плодами этой слежки позволяет только акк Гугла. Заодно поймете, насколько много сетевые монстры о вас знают.

  • На показанном выше скриншоте внизу приведена ссылка на ваш личный кабинет в Google . Тоже отличная и информативная вкладка. На ней вы увидите, в каких сервисах что у вас имеется, что создано, что добавлено, загружено, настроено и т.п.

    При щелчке на каждую из вкладок вы получите детальную информацию и даже сможете перейти на данный сервис в случае необходимости.

  • Поиск телефона — очень эффектная опция (айфоноводы подобным функционалом гордятся):

    Мне же самым полезным тут кажется удаленный выход из аккаунта . Таким образом тот, в чьих руках окажется телефон, не сможет воспользоваться вашими паролями, не сможет прочитать вашу почту и не получит доступ к деньгам в таких сервисах, как например, Адвордс или Адсенс.

  • В области "Связанные приложения и сайты " вы сможете посмотреть сайты и приложения, которые используют ваш акк для авторизации. Само по себе это действо безопасно и не может привести к чему-то плохому, но тем не менее вы всегда можете отключить ранее разрешенную авторизацию для определенных сайтов или приложений:

    Тут же можно будет проинспектировать и при необходимости удалить пароли хранимые вашим Хром-браузером или Андроидом в аккаунте. Лично я стараюсь не доверять браузерам хранение паролей от различных денежных сервисов и прочих «высокорискованных активов».

  • Как сделать бэкап, удалить или завещать свой Account

    Есть еще несколько любопытных настроек, которые скрываются в левом меню.

    Синхронизация через аккаунт закладок, паролей и расширений в Хроме

    На всякий случай поясню про хранение данных браузеров в аккаунте — как это все настраивается. Браузер Гугл Хром имеет возможность синхронизировать все свои настройки с или мобильных устройствах.

    Для этого достаточно будет в настройках этого браузера осуществить вход в свой акк :

    После этого на открывшейся странице настроек (иконка с тремя горизонтальными точками и пункт «Настройки») выбрать, что именно нужно будет синхронизировать (поставить галочки) и указать, нужно ли будет все это дело на лету шифровать. По умолчанию выбрано "Синхронизировать все":

    Закладки, пароли, настройки, установленные расширения и приложения, темы и открытые вкладки всех ваших Хромов (на десктопах, планшетах, мобильниках) будут храниться в вашем аккаунте и это можно будет лицезреть в количественном выражении в " (эту ссылку на нее вы так же найдете в самом верху окна настроек хрома).

    Вот, собственно, и все, на чем я хотел заострить внимание. Остальные настройки вашего профиля в Гугле достаточно понятны, прозаичны и, по большому счету, не так уж важны (во всяком случае для меня).

    Удачи вам! До скорых встреч на страницах блога сайт

    посмотреть еще ролики можно перейдя на ");">

    Вам может быть интересно

    Как добавить сайт в аддурилки (add url) Яндекса, Google и других поисковиков, регистрация в панелях для вебмастеров и каталогах

    То, что давно используется в платежных системах и онлайнбанкингах для управления счетами, где необходим максимальный уровень безопасности, наконец появляется и в обычных онлайнсервисах. С недавнего времени Google предоставляет возможность использовать двухступенчатый способ авторизации.

    Дождались! Одно из недавних и самых заметных нововведений Google-всяких сервисов - новая двухступенчатая авторизация. По сути, она добавляет новый слой защиты для твоего аккаунта Google, требуя во время входа в систему не только знать привычные логин и пароль, но еще иметь доступ к твоему телефону. Это значит, что если кто-то украдет или подберет пароль, то обломается во время авторизации из-за отсутствия специального кода, который можно получить только с помощью твоего телефона.

    Поэтому, если ты используешь Gmail в качестве своего основного почтового ящика (а именно так и делает большинство из команды «Хакера»), то мы настоятельно советуем подключить эту новую опцию.

    Двухступенчатая авторизация - что это?

    Пароль - это единственное, что отделяет данные в твоем почтовом ящике от злоумышленника. Каким бы сложным ни был пароль, пускай даже сгенерированный случайным образом, он легко может оказаться в чужих руках и беспроблемно быть использован для входа в систему. Двухступенчатая авторизация - тот самый подход, который делает вход в систему намного более защищенным.

    В этом случае одного только пароля недостаточно. Для входа требуется два независимых элемента:

    • собственно, пароль;
    • одноразовый код, который нельзя использовать повторно.

    Этот принцип давно взят на вооружение для проведения финансовых транзакций через онлайн-банкинг, где нужна максимальная безопасность. Правда, одноразовые коды (так называемые TAN’ы) выдаются в отделении банка на специальной карточке. В случае же двухступенчатой авторизации Google, код выдается пользователю через телефон. Есть три способа получить одноразовый пасс:

    • через специальное мобильное приложение Google Authenticator, которое сейчас доступно для устройств Android, iPhone и Blackberry;
    • в бесплатном SMS-сообщении, которое при запросе отправит Google;
    • через голосового робота (для пользователей с городским телефоном, где нет SMS).

    Самое главное, что нужно понять: одного логина и пароля для входа в систему в случае двухступенчатой авторизации недостаточно. Для каждой авторизации будет необходим одноразовый код. И здесь надо иметь в виду, что если под рукой не окажется телефона (и, соответственно, возможности запросить код), то выполнить вход в систему будет затруднительно. Единственный выход из этого положения - набор специальных запасных ключей, который Google предлагает распечатать и положить в кошелек. Других вариантов нет!

    Как включить?

    Кнопка для включения двухступенчатой авторизации находится в настройках твоего аккаунта Google (google.com/accounts). В группе настроек «Personal Settings» и подразделе «Security» есть ссылка «Using 2-step verification», которая переадресует тебя на мастера по настройке двухступенчатой авторизации. Процесс начинается с выбора телефона.

    Если у тебя одно из устройств, на которое можно установить программу Google Authenticator (оно доступно для iPhone, Android и Blackberry), то мастер попросит установить его на телефон.

    Позже его нужно будет настроить, прописав в мобильном приложении параметры своей учетной записи Google, и ввести secret key с экрана монитора. Все настройки программа сделает автоматически, если ты сосканируешь с экрана сгенерированный мастером QR-код. Пока Google разрабатывает версии Google Authenticator для других платформ, получать одноразовые коды можно на любой телефон с помощью SMS-сообщений. Настроить такую доставку одноразовых кодов необходимо в любом случае.

    Для этого на телефон придет специальный пароль, который нужно будет ввести в поле для подтверждения номера телефона. Помимо этого мастер предложит создать запасные (так называемые backup) коды на крайний случай, когда доступа к паролям не будет. Google сгенерирует что-то вроде визитки, которую можно распечатать и положить к себе в кошелек. Тут надо понимать, что даже если «шпаргалка» потеряется и попадет к кому-то в руки, он ничего не сможет с ней сделать, не зная логина и пароля для доступа к аккаунту. Никакого риска нет. Рекомендую сразу настроить все способы получения одноразовых паролей: установить и настроить мобильное приложение (если это возможно), прописать номер мобильного телефона для приема SMS и распечатать запасные коды (к моменту сдачи материала у меня возникла реальная ситуация воспользоваться ими).

    Как использовать?

    Итак, как теперь будет выглядеть процесс входа в систему? По сути, все то же самое, за исключением одного пункта.

  • Ты заходишь на страницу с формой для авторизации в сервисах Google (например, Gmail).
  • Вводишь логин и пароль, как это делал ранее.
  • И вот здесь появляется новый этап. Google запрашивает код верификации. Открываем Google Authenticator и вводим отображающийся там код для входа в систему. Точно так же этот код можно получить по SMS или взять из распечатанной «шпаргалки»
  • Опция «Remember verification for this computer for 30 days» позволяет вводить код авторизации один раз в 30 дней.
  • Все, мы внутри и пользуемся сервисами Google, как и раньше.
  • Как видишь, процесс входа в систему практически не изменился. Внимательный читатель, возможно, заметит: «Ну, хорошо, с веб-интерфейсом все понятно, а как указывать такие пароли в почтовом клиенте, которые забирает почту по POP3/IMAP?». И будет прав.

    Вскоре после включения новой схемы авторизации перестанут работать все приложения. Традиционный процесс общения с сервером в тех же самых десктопных клиентах для работы с почтой жестко зашит в код программы, а поддержки двухступенчатой схемы я пока еще нигде не видел.

    Чтобы обойти это ограничение, Google предлагает особую схему авторизации для этих приложений. Для каждого такого приложения (будь это десктопный почтовый клиент, мобильное приложение на телефоне или что-либо еще) генерируется уникальный пароль приложения (это называется Application-specific passwords). То есть мы используем прежний логин, но вместо привычного пароля используем специально сформированный для этого приложения пасс.

    Заходим в настройки безопасности на страницу google.com/accounts/b/0/IssuedAuthSubTokens (либо через страницу аккаунта {Security — Authorizing applications & sites). Здесь ты увидишь список веб-приложений, которые используют авторизацию через Google с помощью технологии Oauth. А ниже находится секция «Application-specific passwords». Для создания нового пасса делаем следующее:

  • Вводим название девайса или приложения, для которого ты хочешь сгенерировать временный пароль.
  • Нажимаем «Generate password».
  • Google возвращает 16-значный пароль, который ты теперь можешь указать в настройках этого конкретного устройства/приложения.
  • Приложение вновь работает.
  • Такую операцию, в частности, я сделал для своего почтового клиента на мобильном телефоне, которым пользуюсь постоянно. В отличие от кода верификации, который необходимо вводить во время каждой авторизации, пароли приложения можно указать в настройках программ один раз. Но в любой момент любой из них можно аннулировать (сделать revoke) с этой же самой страницы. Именно так я, кстати, сделал для пасса, который зафиксирован на скриншоте. Руки прочь от моего аккаунта! 🙂

    Знали ли Вы, что используя Google , можно сделать на своем сайте регистрацию на сайте в один клик? Каждый, у кого есть аккаунт в Google, может просто нажать на кнопку, а скрипт автоматически загрузит в приложение e-mail, имя и фотографию.
    Используя этот вариант входа/регистрации, вы создадите удобство для пользователей. Вот некоторые из преимуществ:

    Не нужно делать проверку формы входа, и вообще создавать форму;

    Нет необходимости в функции «Забыл пароль»;

    E-Mail адресы уже подтверждены Google, поэтому вам не нужно высылать подтверждение.

    Конечно, это будет работать, только если у человека есть аккаунт Google, поэтому имеет смысл сделать что-то в дополнение к этой системе регистрации.

    Настройка приложения

    Первый шаг заключается в создании приложения через консоль Google API . Следуйте инструкциям для получения дополнительной информации. После завершения процесса, разместить полученные ключи в setup.php.
    Запуск кода из schema.sql (вы можете найти его в архиве скачать) в PhpMyAdmin или ином административном MySQL инструменте. Это создаст glogin_users таблицу в базе данных, которая будет использоваться для хранения информации об учетных записях пользователей вашего приложения. После этого, напишите свои данные подключения к базе данных в setup.php .

    PHP

    Для чтения и вставки в базу данных используется библиотека Idiorm . Будем создавать следующие PHP страницы:

    index.php – главный файл приложения;

    setup.php – соединение с базой данных и ключи выданные Google;

    Папки библиотеки Idiorm, PHP библиотеки Google.

    Давайте взглянем на код первой части index.php :

    200?"200px":""+(this.scrollHeight+5)+"px");">require "setup.php";

    // Create a new Google API client
    $client = new apiClient();
    //$client->setApplicationName("Tutorialzine");

    // Configure it
    $client->setClientId($client_id);
    $client->setClientSecret($client_secret);
    $client->setDeveloperKey($api_key);
    $client->setRedirectUri($redirect_url);
    $client->setApprovalPrompt(false);
    $oauth2 = new apiOauth2Service($client);

    // The code parameter signifies that this is
    // a redirect from google, bearing a temporary code
    if (isset($_GET["code"])) {

    // This method will obtain the actuall access token from Google,
    // so we can request user info
    $client->authenticate();

    // Get the user data
    $info = $oauth2->userinfo->get();

    // Find this person in the database
    $person = ORM::for_table("glogin_users")->where("email", $info["email"])->find_one();

    If(!$person){
    // No such person was found. Register!

    $person = ORM::for_table("glogin_users")->create();

    // Set the properties that are to be inserted in the db
    $person->email = $info["email"];
    $person->name = $info["name"];

    If(isset($info["picture"])){
    // If the user has set a public google account photo
    $person->photo = $info["picture"];
    }
    else{
    // otherwise use the default
    $person->photo = "assets/img/default_avatar.jpg";
    }

    // insert the record to the database
    $person->save();
    }

    // Save the user id to the session
    $_SESSION["user_id"] = $person->id();

    // Redirect to the base demo URL
    header("Location: $redirect_url");
    exit;
    }

    // Handle logout
    if (isset($_GET["logout"])) {
    unset($_SESSION["user_id"]);
    }

    $person = null;
    if(isset($_SESSION["user_id"])){
    // Fetch the person from the database
    $person = ORM::for_table("glogin_users")->find_one($_SESSION["user_id"]);
    }



    HTML

    Код HTML занимает нижнюю половину страницы index.php . После авторизации через Google сюда мы сможем выводить данные о пользователе. Сама страница является стандартным документом HTML5.


    200?"200px":""+(this.scrollHeight+5)+"px");">



    Google Powered Login Form | Tutorialzine Demo






    Login Form




    Рекомендуем почитать

    Наверх