我正在做一个由别人建立的React Native项目;该项目连接到用户设备上的Google Fit来读取一些健康数据。
我们的代码是用来构建两个不同的应用程序,两者都具有相同的代码库,但略有不同的品牌,功能等。在App1(主应用程序)中,访问Google Fit很好-如果有必要,会显示授权屏幕(即要求我选择一个帐户以继续使用App1的屏幕),如果用户允许数据访问,则会从设备读取数据。然而,当我尝试用App2做同样的事情时,显示授权屏幕,我可以选择一个帐户,但系统似乎认为我已经拒绝访问,并且没有读取数据。
两个app在app.json中有不同的名称和显示名称;他们也有不同的Gradle文件,允许他们连接到不同的后端,显示不同的文本等。它们在Firebase控制台中被设置为不同的应用程序,因此它们有不同的谷歌服务。json文件。App 1有自己的GCP项目,但App 2没有——这有关系吗?除此之外,应用程序的其他方面都是一样的。
我与Google Fit连接的代码如下(当用户点击标有"链接Google Fit"的按钮时触发此功能)。它使用react-native-google-fit (https://github.com/StasDoskalenko/react-native-google-fit)包。
if (!GoogleFit.isAuthorized) {
const options = {
scopes: [Scopes.FITNESS_HEART_RATE_READ],
};
GoogleFit.authorize(options)
.then((authResult) => {
// AT THIS POINT AUTH RESULT IS:
// {"message": "Authorization cancelled", "success": false}
})
};
所以即使我选择一个有效的帐户使用,我得到'授权取消'。
我想可能有什么东西必须启用才能允许App 2使用Google Fit,但我不知道它是什么。
当涉及到不同品牌使用OAuth服务时,Google是非常严格的。你想要的,或者更确切地说,你的客户应该拥有的,是每个品牌的单独项目。
你可以在这个FAQ部分了解更多的细节。
这样他们就可以正确地验证每个项目,特别是当他们必须使用有限的范围时。