googlefitapi无oauth结果响应

omjgkv6w  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(346)

我正在尝试为我的论文项目构建一个bpm计数器。我是一个关于googlefitness api的新手,所以我首先从git克隆google的step计数器示例(如果感兴趣,请链接[here][1])。我设置了一切,我授权了我的帐户,将其连接到一个云项目,使用keytool获得sha-1证书,但我仍然无法得到我所要求的数据的响应,无论是bpm还是steps。我在xml文件中根据需要设置每个权限,但仍然面临这个问题。下面,我给你一些我的代码的一部分,如果你需要任何其他lmk。提前感谢您的回复。
xml清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
    <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

登录功能:

private fun fitSignIn(requestCode: FitActionRequestCode) {
            if (oAuthPermissionsApproved()) {
                performActionForRequestCode(requestCode)
            } else {
                requestCode.let {
                    GoogleSignIn.requestPermissions(
                            this,
                            requestCode.ordinal,
                            getGoogleAccount(), fitnessOptions)
                }
            }
        }

        override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)

            when (resultCode) {
                RESULT_OK -> {
                    val postSignInAction = FitActionRequestCode.values()[requestCode]
                    postSignInAction.let {
                        performActionForRequestCode(postSignInAction)
                    }
                }
                else -> oAuthErrorMsg(requestCode, resultCode)
            }
        }

选择我的帐户时的代码请求:

private fun performActionForRequestCode(requestCode: FitActionRequestCode) = when (requestCode) {
        FitActionRequestCode.READ_DATA -> readData()
        FitActionRequestCode.SUBSCRIBE -> subscribe()
    }

    private fun oAuthErrorMsg(requestCode: Int, resultCode: Int) {
        val message = """
            There was an error signing into Fit. Check the troubleshooting section of the README
            for potential issues.
            Request code was: $requestCode
            Result code was: $resultCode
        """.trimIndent()
        Log.e(TAG, message)
    }

    private fun oAuthPermissionsApproved() = GoogleSignIn.hasPermissions(getGoogleAccount(), fitnessOptions)
private fun getGoogleAccount() = GoogleSignIn.getAccountForExtension(this, fitnessOptions)

在请求数据时,我总是以结果0结束。
[![模拟器][2]][2]
这是我的帐户云设置[gcloud][3]][3]
我已经三次检查了googlefit的faq中的所有操作是否正确,并且我已经为我的项目启用了fitness api,但是我仍然没有得到任何结果。如果有人能给我指出正确的方向,我将不胜感激。提前感谢[1]:https://github.com/android/fit-samples/tree/master/stepcounterkotlin [2]: https://i.stack.imgur.com/zvtni.png [3]: https://i.stack.imgur.com/ubtpb.png

gopyfrb3

gopyfrb31#

回答我自己的问题。经过4次痛苦的搜索,解决方法太简单了。android studio在部署debug apk时使用debug.keystore文件。以便将其更改为您用于签署sha-1的文件。为此,请转到:
文件->项目结构->模块->应用->签名配置并编辑调试配置以使用您创建的密钥库文件。输入密码和别名并重建apk。这次fit api将连接!

相关问题