Google Sign 请求使用 Fitness API 始终失败

Sun*_*Sun 3 android google-api google-oauth google-fit

我正在按照本教程集成Google Fit API

我所做的步骤:

  1. 在 Firebase 中创建了一个项目,并在项目设置中配置了 SHA-1 密钥。
  2. 下载Google服务JSON文件并将其添加到项目中
  3. 在 Google 项目控制台中启用了 Google Fit API。
  4. 已验证自动生成的 OAuth 客户端 ID 是否存在于凭证部分。

Google 登录请求始终失败。分享下面的代码。

private fun connectToGoogleFit() {
    Log.e("GOOGLE_FIT", "google fit init")
    val fitnessOptions = FitnessOptions.builder()
        .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .build()
    if (!GoogleSignIn.hasPermissions(
            GoogleSignIn.getLastSignedInAccount(this),
            fitnessOptions
        )
    ) {
        Log.e("GOOGLE_FIT", "no permission")
        GoogleSignIn.requestPermissions(
            this, // your activity
            GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
            GoogleSignIn.getLastSignedInAccount(this),
            fitnessOptions
        )
    } else {
        Log.e("GOOGLE_FIT", "has permission")
        accessGoogleFit()
    }
}
private fun accessGoogleFit() {
    //todo
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == GOOGLE_FIT_PERMISSIONS_REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            Log.e("GOOGLE_FIT", "connection success")
            accessGoogleFit()
        } else {
            Log.e("GOOGLE_FIT", "connection failed")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在运行此代码时看到一个帐户选择器对话框。从对话框中选择帐户时,我在 onActivityResult 中收到失败代码。

可用的文档似乎很旧。我错过了什么吗?

小智 7

我有同样的问题。

经过一天多的时间我找到了解决方案。

为了使用 Google Fit,您必须在 Firebase 项目的身份验证面板中启用 Google Provider。

Firebase 面板