I am trying to integrate Google Sign In into my android app, but I got an error. When it ran an older version of Google Play services (for example 9.8.79) there was no problem, it worked perfectly. Then when it ran the latest version of Google Play services the problem appeared, the error code is
Status{statusCode=unknown status code: 12500, resolution=null
and I noticed the logcat message is :
12-21 16:47:57.128 909-1861/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.129 909-2225/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@daa436e
12-21 16:47:57.129 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms
12-21 16:47:57.133 909-1300/? I/ActivityManager: retrieveServiceLocked, callerApp: ProcessRecord{9210179 10959:com.google.android.gms.ui/u0a8}, flags: 400
12-21 16:47:57.134 909-1300/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.134 909-1863/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@71e6a0f
12-21 16:47:57.135 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms
What could be the possible cause of this?
Thanks
the code is:
private void googleSignIn() {
if(mGoogleApiClient == null){
GoogleSignInOptions gso = new GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestId()
.requestIdToken(getResources().getString(R.string.server_client_id))
.build();
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this,this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.enableAutoManage(this, this)/* FragmentActivity *//* OnConnectionFailedListener */
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}
if(mGoogleApiClient!=null){
mGoogleApiClient.connect();
}
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
app gradle:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
// The Fabric Gradle plugin uses an open ended version to react
// quickly to Android tooling updates
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.qraved.imaginato.loginterminator"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.1.1'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services-auth:9.6.1'
compile('com.twitter.sdk.android:twitter:2.1.1@aar') {
transitive = true;
}
compile 'com.facebook.android:facebook-android-sdk:4.28.0'
}
project gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет внутреннего сервера, я просто передаю данные о своей учетной записи Google в свое приложение.
Сначала я попробовал его, используя пример входа в Google, но Я получил ошибку (без изменений кода, за исключением печати стека трассировки ниже). Я просто использовал пример SignInActivity, так как у меня нет внутреннего сервера.
Exception com.google.android.gms.common.api.ApiException: 12500:
at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89) at android.app.Activity.dispatchActivityResult(Activity.java:7010)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6316)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Код
public class SignInActivity extends AppCompatActivity implements
View.OnClickListener {
private static final String TAG = "SignInActivity";
private static final int RC_SIGN_IN = 9001;
private GoogleSignInClient mGoogleSignInClient;
private TextView mStatusTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Views
mStatusTextView = findViewById(R.id.status);
// Button listeners
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);
findViewById(R.id.disconnect_button).setOnClickListener(this);
// [START configure_signin]
// Configure sign-in to request the user's ID, email address, and basic
// profile. ID and basic profile are included in DEFAULT_SIGN_IN.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
// [END configure_signin]
// [START build_client]
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
// [END build_client]
// [START customize_button]
// Set the dimensions of the sign-in button.
SignInButton signInButton = findViewById(R.id.sign_in_button);
signInButton.setSize(SignInButton.SIZE_STANDARD);
signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
// [END customize_button]
}
@Override
public void onStart() {
super.onStart();
// [START on_start_sign_in]
// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);
// [END on_start_sign_in]
}
// [START onActivityResult]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
// The Task returned from this call is always completed, no need to attach
// a listener.
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
// [END onActivityResult]
// [START handleSignInResult]
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
// Signed in successfully, show authenticated UI.
updateUI(account);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
// Please refer to the GoogleSignInStatusCodes class reference for more information.
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
e.printStackTrace();
updateUI(null);
}
}
// [END handleSignInResult]
// [START signIn]
private void signIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
// [END signIn]
// [START signOut]
private void signOut() {
mGoogleSignInClient.signOut()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// [START_EXCLUDE]
updateUI(null);
// [END_EXCLUDE]
}
});
}
// [END signOut]
// [START revokeAccess]
private void revokeAccess() {
mGoogleSignInClient.revokeAccess()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// [START_EXCLUDE]
updateUI(null);
// [END_EXCLUDE]
}
});
}
// [END revokeAccess]
private void updateUI(@Nullable GoogleSignInAccount account) {
if (account != null) {
mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
} else {
mStatusTextView.setText(R.string.signed_out);
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sign_in_button:
signIn();
break;
case R.id.sign_out_button:
signOut();
break;
case R.id.disconnect_button:
revokeAccess();
break;
}
}
}
Из того, что я прочитал, проблема может быть вызвана Поколение SHA1.
Я следовал полному руководству, но, видимо, оно не работает.
Я скопировал SHA1 из Gradle signatureReport
Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
Что может быть возможной причиной этого?
Благодарность
Постскриптум Может ли это быть возможной причиной?
Google Play services out of date. Requires 11720000 but found 10932470
28 ответов
Лучший ответ
Просто обновите сервисы Google Play до последней версии (или 11720000 в этом случае). Если вы используете AVD, изображения Nexus 5 и 5X поддерживают Google Play. После запуска и запуска эмулятора перейдите в меню расширенных элементов управления> Google Play, а затем обновите.
38
Strauss
6 Дек 2017 в 05:40
для ошибки 12500 Необходимо добавить поддержку gmail только в настройках firebase, а для ошибки 10 добавить ssh-отпечаток в консоли firebase, как показано на рисунке.
40
Vijay
24 Май 2019 в 05:46
У меня возникла та же проблема после открытия проекта на другом компьютере (в другой Android Studio). В моем случае я решил это с помощью Firebase Assistant, который я использовал для первоначальной настройки Firebase. Откройте Firebase Assistant (Инструменты> Firebase) и выберите Аутентификация> Подключиться. Это переподключило проект к Firebase и обновило конфиги
1
allo
19 Дек 2018 в 15:55
Может также случиться, что компилятор cordova не сможет найти нужный файл хранилища ключей.
Решение . Перед выполнением ionic cordova build android укажите свойства подписи .
Шаг 1 . Создайте файл хранилища ключей отладки.
Выполнить команду
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Использовать пароль: android
Шаг 2: скопируйте файл хранилища ключей (debug.keystore) из ~/.android в каталог platform/android вашего текущего проекта
Шаг 3: создайте файл с именем release-signing.properties в каталоге platform/android
Шаг 4: добавьте содержимое в файл
storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android
Примечание. Это значения по умолчанию. Если вы указали свой псевдоним и пароль, используйте их соответственно.
Шаг 5 . Теперь постройте ionic cordova build android
1
Debojyoti
10 Ноя 2018 в 14:40
Перейдите к своему проекту в консоли Firebase, откройте «Настройки проекта» и добавьте туда отпечатки своих сертификатов SHA. Загрузите обновленный файл google-services.json и добавьте его в папку приложения Projects.
Это сработало для меня.
4
ochs.tobi
20 Дек 2018 в 08:12
Кажется, ваш SHA1 перезаписан Google Play Store. Проверьте в своем магазине Google Play, панели запуска, под подписью приложения, посмотрите, есть ли в Google Play добавленный дополнительный SHA1.
И скопируйте, что SHA1, добавьте к вашему соответствующему месту, сделает работу.
11
Paul Zhang Ising
5 Ноя 2018 в 02:25
Я думаю, что ошибка произошла от неправильного SHA1. Пожалуйста, не забывайте, что SHA1 отличается между выпуском и режимом отладки в андроид студии. Вместо того, чтобы использовать keytool для получения SHA1, вы можете использовать проект Gradle -> Task -> android -> signatureReport в студии android (можете открыть его с помощью меню View -> Toolwindow -> gradle), чтобы получить релиз и отладку SHA1. После этого для простоты работы вам нужно создать 2 отдельных учетных данных с двумя SHA1 на облачной консоли Google (Google просто дает указание создать 1 с помощью выпуска SHA1, когда мы разрабатываем его, он не будет работать, поскольку он использует отладочный SHA1).
3
Bioz Nguyen
27 Ноя 2018 в 15:48
В моем случае, после добавления отпечатка пальца в консоль Firebase, он автоматически выбирается консолью разработчиков Google и показывает отпечатки пальцев. Но войти не получилось. Посмотрев каждый шаг, я понял, что Google перевернул мой пакет файлов манифеста, как этот com.xxxxxxxx.app. Но на самом деле это app.xxxxxxxx.com в консоли разработчика Google. Поэтому я удалил автоматически созданный отпечаток и добавил отпечаток с правильным именем пакета. БУМ !! . Это сработало.
0
Naroju
25 Янв 2019 в 12:10
В моем случае проблема заключалась в том, что в моем эмуляторе не было Play Store. Я сделал эмулятор (с именем API 23) через Visual Studio, потому что я также разрабатываю с использованием Xamarin.Forms, и в Диспетчере устройств Visual Studio Android вы можете выбрать, должен ли ваш эмулятор иметь Google Play Store.
Пришлось создать эмулятор через Android Studio AVD и убедиться, что у него есть Play Store:
0
Reed
12 Янв 2020 в 11:05
Я застрял на некоторое время.
Убедитесь, что эти шаги выполнены
Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method
1
Sumit Kumawat
8 Янв 2020 в 11:10
Я застрял в проблеме входа в Google с 2-х недель, наконец-то хорошо разобрался. Давайте мне объяснить причину. Проблема была связана с пожарной базой. В Firebase они упомянули поле «поддержка по электронной почте» как необязательное. Но как только я добавил его (любой из ваших личных писем), проблема была решена, и я получил ответ. Если вы получили ошибку 12501, то это связано с настройками в вашем аккаунте Google.
1
Kevin
3 Июл 2019 в 06:11
Проверьте, добавлены ли отпечатки SHA-1 в настройки проекта Firebase. Если нет, найдите отпечаток SHA-1, используя
https://developers.google.com/android/guides/client-auth
Также найдите отпечаток ключа разблокировки SHA-1, используя
keytool -list -v -keystore <keystore path>
Удалите <keystore path> с путем к хранилищу ключей.
Затем добавьте оба отпечатка SHA-1 в настройки проектов Firebase.
NB. Не забудьте заменить google-services.json обновленным google-services.json новыми отпечатками пальцев. Я потерял два дня на этом.
Пока отлаживать
Студия Android автоматически генерирует ~/.android/debug.keystore при первом отладить сборку и использовать ее для подписи приложения.
Чтобы запустить SHA-1 (пароль android) (doc) ) :
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Это SHA-1 необходимо добавить в настройки приложения в firebase, чтобы разрешить использование возможностей входа в Google при тестировании отладочной сборки.
43
michaelbn
22 Янв 2019 в 10:19
Ошибка PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, ноль)
Эту ошибку 12500 можно устранить, добавив адрес электронной почты службы поддержки . на ваш проект в настройках проекта. Открыть ссылку https://console.firebase.google.com/
Выберите свой проект и откройте вкладку настроек.
Укажите действующий адрес электронной почты службы поддержки и перезапустите приложение.
97
Maddu Swaroop
25 Фев 2020 в 05:25
Если есть еще кто-то с подобной проблемой, если вы добавляете пользовательские области, убедитесь, что это допустимая область. В моем случае я смешал области Facebook с областями Google и потратил некоторое время, чтобы понять это!
5
Paulo Taylor
11 Апр 2018 в 10:53
Я использую Аутентификацию Firebase. Мой SHA-1 был указан правильно, идентификатор клиента также был правильным, но я все еще получал 12500.
Оказалось, что моя проблема заключалась в том, что я не указал адрес электронной почты службы поддержки в настройках своего проекта. (Настройки -> вкладка Общие -> раздел Ваш проект (Общие настройки)).
5
algrid
24 Май 2019 в 16:00
Сначала убедитесь, что вы зарегистрировали свое приложение в консоли разработчиков Google
Убедитесь, что в вашем приложении Firebase есть ключи debug и release. Если эта ошибка появляется в производственной среде, добавьте SHA-1 release key в базовое приложение. Если он появится в разработке, добавьте SHA-1 debug key.
Получение ключа отладки / выпуска:
keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]
Обязательно загрузите обновленное google-services.json в свое приложение.
3
Denn
7 Янв 2019 в 09:00
Для меня проблема заключалась в использовании ClientID ‘release’ с моим настроенным на отладку приложением. Убедитесь, что у вас есть ключи выпуска и отладки, использующие каждый SHA-1 соответственно.
2
peresisUser
10 Окт 2018 в 07:12
Когда ваше приложение проходит проверку подлинности с помощью внутреннего сервера или обращается к API Google с вашего внутреннего сервера, вы должны передать идентификатор клиента OAuth 2.0, созданный для вашего сервера, в метод requestIdToken при создании объекта GoogleSignInOptions для доступа к основной информации профиля пользователя. , Кроме того, не забудьте отправить электронное письмо в службу поддержки на экране согласия OAuth, который находится на странице учетных данных в консоли API.
2
Sridhar Shanmugam
5 Янв 2020 в 15:36
Убедитесь, что вы правильно настроили следующие вещи:
- Сгенерируйте идентификатор клиента в вашем проекте Google.
- Укажите правильный ключ SHA-1 для этого идентификатора клиента. (отладка / выпуск)
- Укажите правильное имя пакета для этого идентификатора клиента.
- Убедитесь, что вы сгенерировали идентификатор клиента в файле
strings.xml,google-services.jsonилиcredentials.json.
0
Chintan Shah
14 Дек 2018 в 08:04
https://developers.google.com/identity/sign-in/ Android / вход следуйте этой документации API, но имейте в виду, что внутри WEB_CLIENT_ID используйте значение идентификатора клиента, которое генерируется в файле google-services.json.
class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null
private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var txt_register = findViewById<TextView>(R.id.txt_register)
txt_register.setOnClickListener {
var intent = Intent(this@MainActivity, RegisterActivity::class.java)
finish()
startActivity(intent)
}
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(WEB_CLIENT_ID)
.requestEmail()
.build()
mGoogleApiClient = GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build()
mAuth = FirebaseAuth.getInstance()
sign_in_button.setOnClickListener {
val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
}
}
override fun onConnectionFailed(p0: ConnectionResult) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
private fun updateUI(user: FirebaseUser?) {
if (user != null) {
Log.e("Email", "Value" + user.email)
}
}
fun signIn() {
}
override fun onStart() {
super.onStart()
val currentUser = mAuth!!.currentUser
updateUI(currentUser)
}
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == REQUEST_CODE_SIGN_IN) {
val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
if (result.isSuccess) {
// successful -> authenticate with Firebase
val account = result.signInAccount
firebaseAuthWithGoogle(account!!)
} else {
// failed -> update UI
updateUI(null)
Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
Toast.LENGTH_SHORT).show()
}
}
}
private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)
val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
mAuth!!.signInWithCredential(credential)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success
Log.e(TAG, "signInWithCredential: Success!")
val user = mAuth!!.currentUser
updateUI(user)
} else {
// Sign in fails
Log.w(TAG, "signInWithCredential: Failed!", task.exception)
Toast.makeText(applicationContext, "Authentication failed!",
Toast.LENGTH_SHORT).show()
updateUI(null)
}
}
}
0
Vajani Kishan
23 Янв 2019 в 07:47
В моем случае я работал над непроизводственным приложением, проблема заключалась в том, что при создании проекта в консоли Firebase возникали проблемы с синхронизацией ключей SHA-1 назад и вперед из консолей разработчиков Firebase и Google. Итак, я решил сначала создать проект в консоли разработчика Google, а затем выбрать его при создании нового проекта в консоли Firebase.
Для этого я также написал учебник, который может вам помочь.
0
Zain
14 Авг 2019 в 04:32
В моем случае эта ошибка возникла из-за того, что старшая команда удалила аутентификацию Android, так как кажется, что для аутентификации бэкэнда ключ Android не нужен. Таким образом, для входа в Google необходимы ключи Android и веб-клиента.
0
Himani Tank
22 Апр 2020 в 06:00
Попробуйте следующие варианты:
keytool -list -v -keystore C:UsersMGDesktoptest.jks -alias test
Он запрашивает пароль и просто введите пароль. Вы можете увидеть отпечатки пальцев SHA1, MD5.
-1
Zoe
5 Ноя 2018 в 16:49
Убедитесь, что ваш проект не должен содержать никаких специальных символов, включая числовые или любые другие символы (имя проекта должно быть простым, например, com.google.testproject).
0
Sekhon123
6 Авг 2019 в 05:44
Ошибка появилась у меня, когда опция Google не была включена, , как показано на изображении .
Это произошло, когда я сменил аккаунт Google и забыл включить опцию подключения к Google.
0
Yonibagi
14 Май 2019 в 09:24
В моем случае это из-за неправильного идентификатора клиента Google. Я изменяю свой ключ на ключ, указанный в google-services.json (под oauth_client объектом)
0
thuanle
25 Ноя 2018 в 10:55
Для работы входа в Google необходима электронная почта поддержки, а также все ссылки на проекты и конфиденциальность , в противном случае выдается 12500.
Установите его на https://console.developers.google.com/apis/credentials в в нижней части второй вкладки с именем «Экран согласия OAuth» — там вы найдете три ссылки, которые необходимо настроить.
Это не упоминается где-либо в руководствах Firebase.
40
zub0r
27 Дек 2019 в 11:04
На самом деле, у меня недавно была такая же проблема, позже я узнал, что версия сервиса Google Play не обновляется. По этому вопросу в переполнении стека https://stackoverflow.com/a/47645136/7352857
Поэтому мне пришлось сделать это в onActivityResult,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GOOGLE_SIGNIN_ID){
Task<GoogleSignInAccount> googleSignInAccountTask = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount googleSignInAccount = googleSignInAccountTask.getResult(ApiException.class);
fireBaseAuthenticationWithGoogle(googleSignInAccount);
}catch (ApiException e){
//if user doesn't have updated google play services version
if (e.getStatusCode() == 12500){
try{
// show your own AlertDialog for example:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// set the message
builder.setMessage("This app uses google play services for
signing in")
.setTitle("Do you want to update?");
builder.setPositiveButton("Ok", (dialog, id) -> {
//final String appPackageName = "com.google.android.gms";
final String appPackageName =
"com.google.android.gms&hl=en_IN";
try {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id = " + appPackageName)));
}catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id = " +
appPackageName)));
}
});
builder.setNegativeButton("Cancel", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
AlertDialog dialog = builder.create();
dialog.show();
}catch (Exception err){
err.printStackTrace();
}
}
}
}else {
// Pass the activity result back to the Facebook SDK
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
Попробуйте это и дайте мне знать, если у вас есть запрос. Я решил эту ошибку этим методом.
Телефон – это полезный и многофункциональный гаджет, но у него есть один неприятный недостаток – большой размер экрана. Из-за этого недостатка устройство не подходит для ситуаций, когда пользователю, например, нужно быстро прочитать сообщение или посмотреть время. Обычно для таких ситуаций используются смарт-часы, которые могут подключаться к смартфону через Bluetooth. В этом гайде расскажем, как подключить часы к телефону через Wearfit Pro.
Что такое Wearfit
Прежде чем мы разберемся с настройкой программы, давайте изучим ее функционал и предназначение. Wearfit Pro – это мобильное приложение, которое позволяет синхронизировать телефон с часами, а после считывать данные с них через Bluetooth. Вообще, Wearfit Pro отличается от других приложений тем, что поддерживает множество моделей смарт-часов. Однако даже эта программа не поддерживает корректно все модели. Поэтому использовать ее рекомендуется только в том случае, если для купленных часов нет фирменного приложения-аналога.
Ниже представлены преимущества приложения Wearfit Pro по сравнению с аналогами:
- приятный интерфейс;
- стабильная работа;
- поддержка программ тренировок;
- широкий выбор моделей;
- возможность подключения через QR-код.
Но, увы, недостатки у программы тоже есть:
- плохая русификация;
- отсутствие синхронизации с другими фитнес-приложениями.
Пока это единственные минусы, которые заметил автор при использовании программы. Возможно, на деле их куда больше. В любом случае, среди китайских конкурентов Wearfit явно занимает лидерство, ведь преимуществ у него гораздо больше, нежели недостатков.
Процесс подключения
По сути, приложение – это лишь инструмент, который не может сам найти часы и подключиться к ним без вмешательства пользователя. Без умения работать с программой, она становится бесполезной. Поэтому давайте сначала разберемся, как использовать ПО Wearfit Pro для подключения часов к ПК.
Установка и регистрация
Разумеется, что для работы с программой, ее необходимо сначала установить. Эта процедура не должна вызвать никаких трудностей, по крайней мере у пользователей смартфонов с ОС Android, на которой установлены сервисы Google Play и владельцев «яблочных» телефонов с ОС iOS на борту. Дело в том, что программа открыто распространяется через магазины приложений Google Play и AppStore. Все, что нужно сделать пользователю, так это нажать на одну из двух ссылок (в зависимости от ОС), а после кликнуть по кнопке «Установить» на открывшейся странице.
На этом процесс установки завершается и начинается процесс регистрации, который подробно описан в инструкции ниже:
- Откройте приложение, кликнув по нему на главном экране.
- Войдите в свой аккаунт. Но скорее всего у вас его не будет, потому нажмите на оранжевую кнопку «Регистр».
- Введите регистрационные данные. В частности, укажите страну и имя пользователя.
- Введите номер телефона или адрес электронной почты для получения кода подтверждения.
- После получения кода введите его в регистрационное поле.
После дальше следуйте инструкциям приложения, пока не завершите регистрацию.
Подключение девайса
После входа в аккаунт перед пользователем появится множество разделов и вкладок. Благодаря интуитивному интерфейсу, разобраться в них можно за несколько минут. Однако, даже разобравшись в интерфейсе, пользователи не всегда находят кнопки для подключения устройств.
Дело в том, что существует два способа подключить часы к смартфону. О каждом расскажем отдельно.
Начнем с подключения напрямую через Bluetooth. Для его использования следуйте инструкции ниже:
- Включите Bluetooth на телефоне.
- Включите функцию на часах.
- В приложении нажмите на три точки в правом верхнем углу и нажмите на кнопку «Добавить устройство».
- В списке выберите смарт-часы по их названию.
- Подтвердите подключение.
У этого способа есть один недостаток – он не подходит для помещений с большим количеством Блютуз-устройств. Есть и второй способ, использование QR-кода, с помощью которого телефон поймет – к какому устройству нужно подключаться. Для реализации этого способа пользователю на телефоне нужно нажать на три точки и выбрать пункт «Сканировать код». На часах код должен появляться после нажатия на одну из кнопок в панели управления.
Возможные проблемы
В некоторых случая процесс сопряжения двух устройств заканчивается ошибкой или непредвиденным результатом. Это может быть связано с разовыми глюками, либо помехами в среде. Чтобы исправить проблему, последовательно выполните действия ниже:
- Перезагрузите телефон и часы.
- На телефоне удалите часы из списка подключенных устройств.
- Перейдите в более тихое место, где мало Bluetooth-девайсов.
- Снова попытайтесь связать два гаджета.
Содержание
- Wearfit Pro
- Описание
- Список возможностей
- Главные плюсы
- Wearfit Pro 12+
- Shenzhen Mi Dun Technology Co., Ltd.
- Снимки экрана (iPhone)
- Описание
- Что нового
- Оценки и отзывы
- Good app, needs improvements
- Needs some work.
- Wear fit pro
- Конфиденциальность приложения
- Данные, используемые для отслеживания информации
- Связанные с пользователем данные
- Информация
- Wearfit Pro
- Отзывы о приложении Wearfit Pro ( 182 )
- WearFit 2.0 12+
- zepeng chen
- Снимки экрана (iPhone)
- Описание
- Wearfit 12+
- zepeng chen
- Снимки экрана (iPhone)
- Описание
Wearfit Pro
Описание
Wearfit Pro – полезное приложение для синхронизации с умным наручным устройством, позволяющим отслеживать состояние здоровья и ежедневную активность пользователя. Программа совместима с большинством моделей смарт-часов, способна уведомлять человека о поставленных целях, а также предлагает настраивать внешний вид интерфейса по своему усмотрению.
Список возможностей
Универсальная программа Wearfit Pro содержит в себе все необходимые функции, позволяющие получать любую информацию с умных часов, а также знакомиться с подробной статистикой. Рассмотрим главные возможности утилиты подробнее:
- считывание количества пройденных шагов;
- статистика по пройденному расстоянию и затраченному времени;
- счетчик потраченных калорий за каждый день;
- детальная настройка визуальной темы часов и интерфейса приложения;
- измерение пульса в реальном времени;
- синхронизация с несколькими умными устройствами одновременно по Bluetooth;
- разноплановые анимации для часов и счетчиков;
- подробная статистика отслеживания прогресса по заранее заданной программе.
Wearfit Pro предоставляет все функции сразу и совершенно бесплатно после того, как вы подключите приложение к смарт-устройству.
Главные плюсы
Основные достоинства программы:
- простая настройка и подключение;
- вариативность настройки интерфейса;
- все функции доступны бесплатно;
- разноплановые варианты внешнего вида.
Также выделим несколько похожих фитнес-инструментов:
- Wearfit;
- SMART-TIME PRO;
- Fitpro;
- Qd Fit и подобные.
Качайте приложение Wearfit Pro и будьте в курсе всей активности в течение дня. Программа легко работает с умными часами, фитнес-трекерами и другими устройствами отслеживания.
Источник
Wearfit Pro 12+
Shenzhen Mi Dun Technology Co., Ltd.
-
- 2,9 • Оценок: 191
-
- Бесплатно
- Включает встроенные покупки
Снимки экрана (iPhone)
Описание
By tightening the bracelet, we can help more people understand and manage their health, thereby making them healthier. At the same time, we will get closer to your footsteps and distance to provide you with better health guidance. You can view the detailed step record analysis at the end of the exercise, or refer to the exercise record on the homepage)
Что нового
Оценки и отзывы
Good app, needs improvements
I have the HW16 watch. I love the watch! But the app needs improvements, I love all the fitness and health tracking info. I wish you could hook up the app to sync with the health app on iPhone. Also the watch faces needs to be updated, or if possible have a more options when customizing your own.
Needs some work.
I like this app. It does what I need it to do. That said, I just realized, almost a year later, that it does not auto sync data like steps at the end of the day. The watch said at the end of the night I had walked 5,000 steps. The app shows only 2,400. It did not sync up at midnight. It should auto sync at some point. My other issue is that recently I have to sit through 30 second add every time I log in and that is ANNOYING. Is there a way to pay to turn ads off? A shame we have to pay for this but I am willing to do that to not have that delay and irritation of watching the same game ads over and over. If I wanted a game, I would look for a game app.
Wear fit pro
The watch and app is very good. All the functions it offer are the best. I love the fact that it can tell my heart rate and other health issues if needed. My only problem is that it won’t let me connect through the app. It will say connected on phone but not in app which then won’t allow me to change the time or anything
Конфиденциальность приложения
Разработчик Shenzhen Mi Dun Technology Co., Ltd. указал, что в соответствии с политикой конфиденциальности приложения данные могут обрабатываться так, как описано ниже. Подробные сведения доступны в политике конфиденциальности разработчика.
Данные, используемые для отслеживания информации
Следующие данные могут использоваться для отслеживания информации о пользователе в приложениях и на сайтах, принадлежащих другим компаниям:
Здоровье и фитнес
Данные об использовании
Связанные с пользователем данные
Может вестись сбор следующих данных, которые связаны с личностью пользователя:
Здоровье и фитнес
Данные об использовании
Конфиденциальные данные могут использоваться по-разному в зависимости от вашего возраста, используемых возможностей или других факторов. Подробнее
Информация
русский, английский, арабский, вьетнамский, голландский, греческий, датский, иврит, индонезийский, испанский, итальянский, корейский, малайский, немецкий, персидский, польский, португальский, тайский, традиционный китайский, турецкий, упрощенный китайский, французский, чешский, японский
Источник
Wearfit Pro
Для этого приложения пока нет обзоров
Для этого приложения пока не указаны ссылки
Аналоги Wearfit Pro
Отзывы о приложении Wearfit Pro ( 182 )

Скорей всего это какой-то сбой, исправьте пожалуйста быстрей Ответить

Не приходит ни одно уведомление из приложений, ни Аймесседж, ни вотсап. Ответить

А в итоге проучила больше минусов!
1) приложение сырое, китайское, ужасное!
2) перевод в настройках: около! Что это за около такое?
3) сообщения с вк, на часах в уведомлениях высвечиваются как с Вайбера Вы серьезно!
4) очень тихая вибрация, звук выключила, звук просто ужасный
5) не убрать лишние китайское циферблаты в меню с пикачу!
6) голосовые сообщения с вк воспроизводятся, то с тел, то с часов.
7) и самое главное! Когда звонят, высвечивается только номер! А не как в телефонной книжки с именем и фото
Разработчики! Если вы решили поставлять людям товар. В данном случае часы! Имейте совесть и уважение, сделайте нормальное приложение без косяков Это что, так трудно?

9) камера на часах не работает
Наверняка ещё что то забыла.
В общем я очень расстроена. Ответить

When updating 2.06.07, the application stopped loading and logging in. Please fix it Ответить
Отзывы и комментарии
Получай список TOP-лучших приложений на почту:
Источник
WearFit 2.0 12+
zepeng chen
-
- Здоровье и фитнес: № 128 в этой категории
-
- 2,8 • Оценок: 491
-
- Бесплатно
Снимки экрана (iPhone)
Описание
MeMental health, heart rate, blood pressure measurement, blood tests, statistical exercise step, sleep time, physical situation palm in hand, at any time to monitor your health.
Intelligent alarm clock
Set the alarm clock for the Wearfit2.0 bracelet, remind you to get up through the brakes and no longer disturb the people around you.
incoming call
Set the call reminder for the Wearfit2.0 bracelet, the phone rings automatically when the phone calls, the phone will not miss the call in the bag.
Support for «health» applications
Can be heart rate, blood pressure, synchronized to the «health» applications, so that you more comprehensive understanding of health.
** This version supports Apple Gear Fit healthy application **
** WEARFIT2.0 only support a higher level of equipment, if remind the device can’t connect, you can go to the app store download and use WEARFIT **
Continued use of GPS running in the background can dramatically decrease battery life.
Источник
Wearfit 12+
zepeng chen
Снимки экрана (iPhone)
Описание
Mental health, heart rate, blood pressure measurement, blood tests, statistical exercise step, sleep time, physical situation palm in hand, at any time to monitor your health.
Intelligent alarm clock
Set the alarm clock for the Wearfit bracelet, remind you to get up through the brakes and no longer disturb the people around you.
.incoming call
Set the call reminder for the Wearfit bracelet, the phone rings automatically when the phone calls, the phone will not miss the call in the bag.
Support for «health» applications
Set the call reminder for the Wearfit bracelet, the phone rings automatically when the phone calls, the phone will not miss the call in the bag.
Can be heart rate, blood pressure, synchronized to the «health» applications, so that you more comprehensive understanding of health.
** This version supports Apple Gear Fit healthy application **
Continued use of GPS running in the background can dramatically decrease battery life.
Источник

















