【问题标题】:Using OAuth 2.0 with angular 7使用带有角度 7 的 OAuth 2.0
【发布时间】:2019-03-04 12:16:49
【问题描述】:

我正在尝试使用 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 进程不返回。

抱歉这个问题太长了,但有什么想法吗?

【问题讨论】:

    标签: angular oauth angular7 fitbit


    【解决方案1】:

    “使用GET方法时,响应很奇怪”

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

    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 参数替换为指向您网站的链接(如果您在开发中,则为 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"
    }
    

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

    【讨论】:

    • 感谢您的回答@Zze。我很困惑。首先,我不会创建一个 http GET 方法,相反,我必须将用户重定向到提供的链接(我想方法 navigateByUrl() 位于“@anular/router”中)。然后在用户通过身份验证后,我将拥有 access_token。因此,为了获取该数据,我必须使用 POST 方法,在正文的哪个位置,我将包含 access_token?这是正确的吗?
    • @OretisZekai FitBit 会重定向到您在redirect_uri 的初始重定向中提供的 URL。在您的应用程序中,设置一个页面来处理此/等待此响应。他们会以类似的方式访问您的页面:http://localhost:4200/FitBitRedirectURI?access_token=xxxx 然后您所要做的就是刮掉该 url 参数数据并获得访问令牌。从那时起,您将来的所有请求都将包含此令牌。
    • 我成功了,但感谢您的澄清!
    • @OretisZekai 很高兴听到它:)
    猜你喜欢
    • 2014-07-26
    • 2013-07-12
    • 2023-04-08
    • 2018-10-05
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2016-05-30
    相关资源
    最近更新 更多