因此,我已经实现了Firebase Auth&AuthUI,并成功使用Google身份验证提供程序登录了用户。但是,现在我正在尝试访问Google API,但是在尝试访问它们时出现登录错误。下面的代码正在尝试连接到Google Fit。
val account = GoogleSignIn.getAccountForExtension(requireContext(), fitnessOptions)
Fitness.getHistoryClient(requireContext(), account)
.readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
.addOnSuccessListener { r ->
val first = r.dataPoints.first()
...
}
.addOnFailureListener { e ->
...
}
此时我收到以下错误消息:
com.google.android.gms.common.api.ApiException: 4: The user must be signed in to make this API call.
我已经调试了Firebase身份验证程序,可以看到当前FirebaseUser
上有两个提供程序,一个Google和一个Firebase,看起来像不是在通过Google验证我的应用,Firebase在验证自己,然后在验证我的应用使用Firebase。
我很确定我可以删除AuthUI并手动执行Google SSO实施(根据Google的文档),但是我确实不想这样做,因为我计划启用几乎所有的Auth提供程序'不必手动将它们全部编码(更不用说完成所有布局了)
因此,如果有人知道如何通过Firebase身份验证的用户访问Google API /在Google帐户中登录,我很乐意听到!
感谢您提供的任何帮助!
好吧,我知道了。 Firebase不会将任何默认范围传递给Google登录提供程序。通过执行]来解决它
... AuthUI.IdpConfig.GoogleBuilder() .setScopes(listOf(Scopes.FITNESS_ACTIVITY_READ) ...
要访问标准步骤,请阅读信息。您可以在here类中找到需要的
Scopes
范围并对其名称进行逆向工程。
希望有帮助!