使用 OAuth 2.0 angular 7

Using OAuth 2.0 with angular 7

我正在尝试使用 FitBit Web API。在访问 API 之前,我必须使用 OAuth2.0 框架。所以从FitBit API Documentation Page,有一个例子就是:

https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=22942C&redirect_uri=http%3A%2F%2Fexample.com%2Ffitbit_auth&scope=activity%20nutrition%20heartrate%20location%20nutrition%20profile%20settings%20sleep%20social%20weight

第一个问题是:我应该使用 GET 还是 POST 方法?所需的信息位于创建的 URL 中,所以我的直觉告诉我应该使用 GET。

使用 GET 方法时,响应很奇怪。我期待一些类似的代码,这样我就可以在下一个 API 调用中使用它来获得实际测量值。我要拨打的电话是:

this.http.get('https://api.fitbit.com/1/user/userID/activities/heart/date/today/1d.json')

但我不知道如何使用令牌,OAuth2.0 进程不 return。

抱歉问了这么长的问题,有什么想法吗?

"When using GET method, the response is weird"

响应是 HTML,因为您已向他们的身份验证门户发出 GET 请求。您应该做的实际上是将用户重定向到 url:

https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=22942C&redirect_uri=http%3A%2F%2Fexample.com%2Ffitbit_auth&scope=activity%20nutrition%20heartrate%20location%20nutrition%20profile%20settings%20sleep%20social%20weight

...然后在 url 中将 redirect_uri 参数替换为 link 到您的站点(如果您在开发中,则为 localhost)。

在用户通过 Fitbit 验证并允许访问您的应用程序后,fitbit 会将用户重定向到 url 以及 access_tokenSee doc

{
    "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0MzAzNDM3MzUsInNjb3BlcyI6Indwcm8gd2xvYyB3bnV0IHdzbGUgd3NldCB3aHIgd3dlaSB3YWN0IHdzb2MiLCJzdWIiOiJBQkNERUYiLCJhdWQiOiJJSktMTU4iLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJpYXQiOjE0MzAzNDAxMzV9.z0VHrIEzjsBnjiNMBey6wtu26yHTnSWz_qlqoEpUlpc",
    "expires_in": 3600,
    "refresh_token": "c643a63c072f0f05478e9d18b991db80ef6061e4f8e6c822d83fed53e5fafdd7",
    "token_type": "Bearer",
    "user_id": "26FWFL"
}

然后您可以使用此访问令牌发出未来的请求。