1

我目前正在开发一个简单的网络应用程序,它将对用户的 google fit 数据进行 GET 调用。

为了降低应用程序的复杂性,我计划将其托管在 firebase 上,并充分利用云功能、firestore 和身份验证工具。

到目前为止,我已经设法通过将健身范围 作为谷歌登录按钮的一部分传递来使用googleapis前端的节点库读取我的谷歌健身数据。https://www.googleapis.com/auth/fitness.activity.read

如果我要使用 firebase 的 google auth 实现,这将具有与我为读取 google fit 数据所做的凭据不同的客户端 ID/不同范围。

似乎如果我想使用 firebase 和 google fit,用户必须使用 firebase 的 google auth 登录,这样我才能验证对我的应用程序的数据库写入,并授予我从应用程序内访问他们的 google fit 数据的权限。

如果有一种方法可以结合起来,那么我可以使用单个令牌来验证和读取 Google Fit 数据?

4

1 回答 1

2

看起来我只需要更深入地挖掘,您可以将范围添加到您的 google auth 提供程序实例。

https://firebase.google.com/docs/auth/web/google-signin

var provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('https://www.googleapis.com/auth/fitness.activity.read');

firebase.auth().signInWithPopup(provider).then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
})

然后进行适应度读数,使用 Authorization 标头中返回的访问令牌

Authorization: `Bearer ${accessToken}`
axios.post('https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate?alt=json', data, axiosconfig)

注意:如果您想在用户不在应用程序中时(在 oauth2 术语中离线)对用户数据进行后台请求,则需要结合使用 firebase 和 gapis js 库。

于 2019-03-07T04:56:13.377 回答