Google 健身授权:AUTH_DENIED 授权已取消

问题描述

我需要有关授权的即时帮助。

我无法向 Google 健身授权。我在控制台中收到AUTH_DENIED 授权取消。这是我一步一步做的。我会为之疯狂。

这是我尝试授权的功能

  const onCheckGoogleFit = () => {
    const options = {
      scopes: [
        Scopes.fitness_ACTIVITY_READ,Scopes.fitness_ACTIVITY_WRITE,Scopes.fitness_BODY_READ,Scopes.fitness_BODY_WRITE,],};
    GoogleFit.authorize(options)
      .then((authResult) => {
        if (authResult.success) {
          console.log("AUTH_SUCCESS",authResult);
        } else {
          console.log("AUTH_DENIED",authResult.message);
        }
      })
      .catch(() => {
        console.log("AUTH_ERROR");
      });
  };

我完成了本文档中的所有步骤:

为了获得 SHA-1 密钥,我在我的 RN 项目目录myProject/android/app 中运行了这个命令:

keytool -list -v -keystore ./debug.keystore -alias androiddebugkey -storepass android -keypass android

输出

Alias name: androiddebugkey
Creation date: May 18,2021
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=...
Issuer: CN=...
Serial number: ...
Valid from: Tue May 18 11:29:52 TRT 2021 until: Sat Oct 03 11:29:52 TRT 2048
Certificate fingerprints:
         SHA1: [I got the key here.]
         SHA256: ...
Signature algorithm name: ...

然后在 console.cloud.google.com 中:

  1. 我启用了 Google fitness API
  2. 我为 OAuth2(选定的用户数据)创建了新凭据。
  3. 跳过的范围(可选)
  4. 应用类型:Android
  5. 从 AndroidManifest.xml 文件创建的包名称。 (com.example)
  6. 粘贴的 SHA-1 密钥取自 RNProject/android/app/debug.keystore(如上面的输出
  7. 已成功获取客户端 ID。

我的 RNProject/android/build.gradle 我有这个:

ext {
    buildToolsversion = "29.0.2"
    minSdkVersion = 21
    compileSdkVersion = 29
    targetSdkVersion = 29
}

添加了这个:

    maven {
        url 'https://maven.google.com'
    }

我的 RNProject/android/app/build.gradle

dependencies{
    // for google-fit
    implementation 'com.google.android.gms:play-services-fitness:20.0.0'
    implementation 'com.google.android.gms:play-services-auth:19.0.0'
    implementation "com.google.android.gms:play-services-base:+"
}

解决方法

所以我找到了解决方案。我的步骤是对的。我只是按照 2 个步骤来解决问题。

  1. 我将我的包名称更改为 (com.example.app),就像 android/app/build.gradle 中的 defaultConfig(applicationId) 一样。我第一次将它用作 (com.example),就像在 AndroidManifest.xml 文件中一样。

  2. 我在 console.cloud.google.com

    中添加了我的 Google 帐户作为测试用户

一切都很完美:)