【问题标题】:How do I handle html response from oauth2 token request?如何处理来自 oauth2 令牌请求的 html 响应?
【发布时间】:2019-08-31 00:17:54
【问题描述】:

在我的 Angular 6 应用程序中,我尝试发送请求以从名为 anilist 的 oauth2 提供程序获取访问令牌。我是这样做的:

    this.http.get(url, options).subscribe(result =>   
    {
      console.log('result: ', result);
    });

...http 是这样导入的:

import { HttpClient } from ‘@angular/common/http';

这会导致错误:

SyntaxError: Unexpected token

这似乎是因为请求正在返回一个 html 文档(很可能是登录页面),它显然无法将其解析为 json。

但是我的问题是:如何发送对 oauth2 令牌的请求并将响应作为 html 页面处理?

谢谢。

【问题讨论】:

  • 这不是 IdP 的标准回复。读取响应 - 也可能有错误消息。

标签: html json oauth-2.0 request token


【解决方案1】:

你想通过http get获取访问令牌有点奇怪。 也许这就是问题所在,您是在谈论这个网站吗? https://anilist.co/

https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/authorization-code-grant

  1. 用户通过您的 oAuth2 登录链接导航到他们的网站
  2. 他们登录,添加授权,然后浏览器重定向到您的回调 url
  3. 您将身份验证代码更改为通过 http post 请求访问令牌。 https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/authorization-code-grant#converting-authorization-codes-to-access-tokens

我认为您会收到 html 响应,因为

  • 您尝试通过 http get 获取访问令牌 - 在这里您得到一个不受支持的方法 / 404 / 等错误
  • 或者您尝试从 anilist 的登录页面 (anilist.co/api/v2/oauth/authorize) 而不是令牌端点 (anilist.co/api/v2/oauth/token) 获取访问令牌李>

更新

如果您使用的是隐式授权,情况也是如此(因为您说您正在创建一个角度应用程序,它可以是一个 SPA - 因此是一个公共客户端,但在这种情况下,访问令牌是在响应中提供的) https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/implicit-grant

【讨论】:

  • 感谢 LeBoucher 的回复。您提供给隐式授权的链接起到了作用。 stackoverflow.com/questions/34338440/…) 中进行重定向解决了这个问题。
猜你喜欢
  • 2016-06-26
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 2015-07-23
  • 1970-01-01
相关资源
最近更新 更多