- Try Sign-In for Android
- Get the project
- Configure a Google API project
- Run the sample
- How it works
- Next steps
- Integrating Google Sign-In into Your Android App
- Before you begin
- Configure Google Sign-in and the GoogleSignInClient object
- Check for an existing signed-in user
- Add the Google Sign-in button to your app
- Start the sign-in flow
- Авторизация через Google в Android и проверка токена на сервере
- Небольшая подготовка
- Добавляем действие на кнопку
- Необходимые области доступа
- Регистрация нашего приложения.
- Код получения токена
- Проверяем токен на сервере. (PHP)
- Android google account information
- Android google account information
Try Sign-In for Android
Use our Android sample app to see how Sign-In works, or add Sign-In to your existing app.
Get the project
If this is your first time using a Google services sample, check out the google-services repository.
Open Android Studio.
Select File > Open, browse to where you cloned the google-services repository, and open google-services/android/signin .
Configure a Google API project
To use the sample, you need to provide some additional information to finish setting up your project. Click the button below, and specify the package name com .google .samples .quickstart .signin when prompted. You will also need to provide the SHA-1 hash of your signing certificate. See Authenticating Your Client for information.
The sample’s IdTokenActivity and ServerAuthCodeActivity examples require you to specify an OAuth 2.0 web client ID. In a real app, this client ID would represent your app’s backend server. A client ID for this purpose was created when you configured the project above.
Find this value by opening the Google API Console:
Your web server client ID is displayed next to Web client (Auto-created for Google Sign-in). Copy and paste the client ID into your project’s strings.xml file:
Run the sample
Now you’re ready to build the sample and run it from Android Studio.
Build the sample and click the run button and select a connected device or emulator with the latest version of Google Play services.
How it works
The application builds a GoogleSignInClient , specifying the sign-in options it needs. Then, when the sign-in button is clicked, the application starts the sign-in intent, which prompts the user to sign in with a Google account.
Next steps
If you want to see how you can implement Google Sign-In in your own app, take a look at our implementation guide.
Did you have a good experience? Run into trouble? Let us know!
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Integrating Google Sign-In into Your Android App
To integrate Google Sign-In into your Android app, configure Google Sign-In and add a button to your app’s layout that starts the sign-in flow.
Before you begin
Configure Google Sign-in and the GoogleSignInClient object
In your sign-in activity’s onCreate method, configure Google Sign-In to request the user data required by your app. For example, to configure Google Sign-In to request users’ ID and basic profile information, create a GoogleSignInOptions object with the DEFAULT_SIGN_IN parameter. To request users’ email addresses as well, create the GoogleSignInOptions object with the requestEmail option.
If you need to request additional scopes to access Google APIs, specify them with requestScopes . For the best user experience, on sign-in, only request the scopes that are required for your app to minimally function. Request any additional scopes only when you need them, so that your users see the consent screen in the context of an action they performed. See Requesting Additional Scopes.
Then, also in your sign-in activity’s onCreate method, create a GoogleSignInClient object with the options you specified.
Check for an existing signed-in user
In your activity’s onStart method, check if a user has already signed in to your app with Google.
If GoogleSignIn.getLastSignedInAccount returns a GoogleSignInAccount object (rather than null ), the user has already signed in to your app with Google. Update your UI accordingly—that is, hide the sign-in button, launch your main activity, or whatever is appropriate for your app.
If GoogleSignIn.getLastSignedInAccount returns null , the user has not yet signed in to your app with Google. Update your UI to display the Google Sign-in button.
Add the Google Sign-in button to your app
Add the SignInButton in your application’s layout:
Optional: If you are using the default sign-in button graphic instead of providing your own sign-in button assets, you can customize the button’s size with the setSize method.
In the Android activity (for example, in the onCreate method), register your button’s OnClickListener to sign in the user when clicked:
Start the sign-in flow
In the activity’s onClick method, handle sign-in button taps by creating a sign-in intent with the getSignInIntent method, and starting the intent with startActivityForResult .
Starting the intent prompts the user to select a Google account to sign in with. If you requested scopes beyond profile , email , and openid , the user is also prompted to grant access to the requested resources.
After the user signs in, you can get a GoogleSignInAccount object for the user in the activity’s onActivityResult method.
The GoogleSignInAccount object contains information about the signed-in user, such as the user’s name.
You can also get the user’s email address with getEmail , the user’s Google ID (for client-side use) with getId , and an ID token for the user with getIdToken . If you need to pass the currently signed-in user to a backend server, send the ID token to your backend server and validate the token on the server.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Авторизация через Google в Android и проверка токена на сервере
Недавно мне захотелось создать личный проект на андроиде, и основной вопрос был такой: как однозначно идентифицировать пользователя заставляя его делать как можно меньше телодвижений? Конечно же это аккаунт Google. Я пытался пробовать множество примеров в сети — однако API несколько раз обновилось за время своего существования, многие методы не работали, мои вопросы в Google+ по этому поводу либо были вообще никак не восприняты окружением, либо были вроде «Никогда такое не делал».
В этой статье я постараюсь как можно более просто для новичков (вроде меня) описать мой метод авторизации в Google на андроид, получения токена и проверке этого самого токена на сервере.
Небольшая подготовка
Для начала — у вас должны быть установлены Google Play Services в SDK. После их установки можно будет импортировать все необходимые библиотеки. Статья пишется с расчетом на Android Studio — он сам подсказывает, что необходимо импортировать.
У вас должно быть создано активити с кнопкой.
Чтобы было привычнее пользователю можете создать стандартную кнопку Google+ Sing-In
Выглядеть она будет вот так:
Просто добавьте в ваш Layout:
Добавляем действие на кнопку
Пишем в нашем активити:
Собственно присвоим кнопке действие — вызов интенда выбора аккаунта. Если вы работаете в Android Studio он сам вам подскажет, какие библиотеки нужно импортировать, так что это подробно тут я расписывать не буду.
startActivityForResult(intent, 123); — задает код с которым произойдет возврат. 123 это код возврата, он может быть каким угодно. Это необходимо, когда вы делаете несколько интендов, и вам надо обработать их по разному.
Необходимые области доступа
Обьявите эти переменные в классе. Это необходимые нам области доступа. Первый написано в google: «Позволяет определить аутентифицированного пользователя. Для этого при вызове API необходимо указать me вместо идентификатора пользователя Google+. » Второе разрешение нам необходимо для получения личных данных пользователя (Имя, Фамилия, адрес G+ страницы, аватар), и последнее для получения E-mail. Я посчитал это важным, ведь это вполне неизменный идентификатор для записи в бд.
Регистрация нашего приложения.
Изначально забыл этот пункт — исправляюсь.
Нам необходимо зайти на code.google.com/apis/console создать там проект, зайти в Credentials и создать новый Client ID для OAuth выбрав пункт Installed Application -> Android. Там нам необходимо ввести название нашего пакета и SHA1 сумму нашего ключа.
С этим у меня на самом деле было много проблем решил достаточно костыльным способом.
Нашел debug.keystore в %USERPROFILE%\.android\debug.keystore поместил в папку с проектом и прописал в build.grandle:
После чего нам нужно выполнить команду:
keytool -exportcert -alias androiddebugkey -keystore
/.android/debug.keystore -v -list
Сам keytool можно найти в SDK. Из вывода копируем SHA1 в нужное поле.
Как я понимаю метод временный, и для нормальной работы надо создать нормальный ключ. Но для тестирования этого достаточно.
Код получения токена
Где 123 — ваш код, который вы указали ранее, где AcrivityName — название вашего актитивити. Грубо говоря — мы скармливаем функции получения токена необходимые разрешения и имя аккаунта. И заметьте — это все происходит в фоновом режиме, после чего полученный токен передается в написанную мною функцию reg. Она уже отправляет токен и все необходимые данные на сервер.
Так как разрабатываю недавно, с исключениями пока что беда, если есть предложение — напишите в личку или в комментарии.
Проверяем токен на сервере. (PHP)
Хочу обратить внимание, полученный нами токен имеет тип Online. И действует он лишь 10 минут. Для получения offline токена (чтобы дольше работать с ним с сервера) обратитесь к этой инструкции developers.google.com/accounts/docs/CrossClientAuth
Собственно скармливаем токен в googleapis и забираем полученный JSON ответ.
Источник
Android google account information
Сообщение отредактировал slava_ussr — 11.12.20, 06:46
Взяла HTC Wildfire, всё вроде ок. НО не добавляется аккаунт google. Из- за этого не могу пользоваться телефоном в полной мере. сижу и мечтаю как года- нибудь откроется Маркет (
Сообщение отредактировал vmaxim — 05.02.13, 07:21
omikudzi,
Что значит не добавляется.
Описывайте проблему ЧЕТЧЕ:
— Что делаете?
— Что ожидаете?
— Что происходит или не происходит?
кстати, думаю у меня тоже самое
проблема вот в чем: есть гугл аккаунт, при входе в маркет с телефона он предлагает подключить аккаунт гугл, ввожу данные, затем экран показывает, мол, выполняется вход, это займет не более 5 минут. затем выскакивает сообщение «не удается установить надежное подключение к серверу для передачи данных. возможно, это временная неполадка либо ваш телефон не поддерживает передачу данных. » и так уже недели две
как бы что делать?
аппарат HTC Hero, ОС 2.1-update1, ПО 3.32.411.2
Если не ошибаюсь, в случае появления ошибки, связанной с «надёжным соединением» надо использовать режим GSM, а не WCDMA.
Сообщение отредактировал Бодтэк — 20.09.10, 17:02
У меня интернет и по GSM(EDGE) и по Wi-Fi, один хрен, не работает мастер подключения аккаунта. Через проводник нормально захожу. Почему аккаунт отвалился от отправки в picasa непонятно.
Я помню, что когда принёс телефон из магазина, стал первый раз подключать аккаунт, то тоже трабл был — по wi-fi не хотел подключаться ни в какую, пришлось на GSM переключать сеть, тогда проехало. А теперь вообще никак :beee:
Сообщение отредактировал Dimonira — 20.09.10, 21:21
Произвёл некие изыскания в сети и оказалось, что проблема с подключением основного/дополнительного аккаунта гугла МАССОВАЯ! И гугл её не решил.
Проблемы есть у людей по всему миру, — с подключением основного аккаунта, дополнительного, через wi-fi и даже после сброса установок до заводских.
У некоторых байда с аккаунтом случилась после обновления системы (как и у меня).
Вот пара тем из форума:
Error adding an additional Google account
Cannot add a Google account via WiFi
В первой теме есть ссылка на программу Android — Add Account (на сайте и исходники), которая «в ручную» добавляет аккаунт.
Программа находится здесь. Ссылки: скачать программу (apk) и исходники.
Сам пока не пробовал.
Сообщение отредактировал Dimonira — 21.09.10, 15:18
Замечу только, что обновление я не устанавливал. В разделе инфо о телефоне — Версия ОС 2.1 Update 1. Номер сборки 2.03.405
о пишет ошибку Error: java.lang.SecurityException: caller uid 12345 is different than the authenticator’s uid.
что делать? (HTC legend)
Сам столкнулся на Galaxy S
Получилось только после входа через программу YouTube в аккаунт.
То есть зашел в программу YouTube там в Аккаунты, там набрал свой ЛОГИН (полностью с @gmail.com) и ПАРОЛЬ (в инструкции выше написано что без пароля)
После этого этот аккаунт появился и в общем списке в настройках «Учетные записи и синхронизация».
НО что главное заработал СТАНДАРТНЫЙ аплет по добавлению аккаунтов google (то есть через стандартное меню «Учетные записи и синхронизация» -> «Добавить аккаунт»)
Столкнулся на планшете ZT-180. (android 2.1)
Источник
Android google account information
Сообщение отредактировал slava_ussr — 11.12.20, 06:46
Взяла HTC Wildfire, всё вроде ок. НО не добавляется аккаунт google. Из- за этого не могу пользоваться телефоном в полной мере. сижу и мечтаю как года- нибудь откроется Маркет (
Сообщение отредактировал vmaxim — 05.02.13, 07:21
omikudzi,
Что значит не добавляется.
Описывайте проблему ЧЕТЧЕ:
— Что делаете?
— Что ожидаете?
— Что происходит или не происходит?
кстати, думаю у меня тоже самое
проблема вот в чем: есть гугл аккаунт, при входе в маркет с телефона он предлагает подключить аккаунт гугл, ввожу данные, затем экран показывает, мол, выполняется вход, это займет не более 5 минут. затем выскакивает сообщение «не удается установить надежное подключение к серверу для передачи данных. возможно, это временная неполадка либо ваш телефон не поддерживает передачу данных. » и так уже недели две
как бы что делать?
аппарат HTC Hero, ОС 2.1-update1, ПО 3.32.411.2
Если не ошибаюсь, в случае появления ошибки, связанной с «надёжным соединением» надо использовать режим GSM, а не WCDMA.
Сообщение отредактировал Бодтэк — 20.09.10, 17:02
У меня интернет и по GSM(EDGE) и по Wi-Fi, один хрен, не работает мастер подключения аккаунта. Через проводник нормально захожу. Почему аккаунт отвалился от отправки в picasa непонятно.
Я помню, что когда принёс телефон из магазина, стал первый раз подключать аккаунт, то тоже трабл был — по wi-fi не хотел подключаться ни в какую, пришлось на GSM переключать сеть, тогда проехало. А теперь вообще никак :beee:
Сообщение отредактировал Dimonira — 20.09.10, 21:21
Произвёл некие изыскания в сети и оказалось, что проблема с подключением основного/дополнительного аккаунта гугла МАССОВАЯ! И гугл её не решил.
Проблемы есть у людей по всему миру, — с подключением основного аккаунта, дополнительного, через wi-fi и даже после сброса установок до заводских.
У некоторых байда с аккаунтом случилась после обновления системы (как и у меня).
Вот пара тем из форума:
Error adding an additional Google account
Cannot add a Google account via WiFi
В первой теме есть ссылка на программу Android — Add Account (на сайте и исходники), которая «в ручную» добавляет аккаунт.
Программа находится здесь. Ссылки: скачать программу (apk) и исходники.
Сам пока не пробовал.
Сообщение отредактировал Dimonira — 21.09.10, 15:18
Замечу только, что обновление я не устанавливал. В разделе инфо о телефоне — Версия ОС 2.1 Update 1. Номер сборки 2.03.405
о пишет ошибку Error: java.lang.SecurityException: caller uid 12345 is different than the authenticator’s uid.
что делать? (HTC legend)
Сам столкнулся на Galaxy S
Получилось только после входа через программу YouTube в аккаунт.
То есть зашел в программу YouTube там в Аккаунты, там набрал свой ЛОГИН (полностью с @gmail.com) и ПАРОЛЬ (в инструкции выше написано что без пароля)
После этого этот аккаунт появился и в общем списке в настройках «Учетные записи и синхронизация».
НО что главное заработал СТАНДАРТНЫЙ аплет по добавлению аккаунтов google (то есть через стандартное меню «Учетные записи и синхронизация» -> «Добавить аккаунт»)
Столкнулся на планшете ZT-180. (android 2.1)
Источник