首页 > 解决方案 > 如何处理来自 oauth2 令牌请求的 html 响应?

问题描述

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

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

…像这样导入http的地方:

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

这会导致错误:

语法错误:JSON.parse 中位置 0 的 JSON 中的意外标记 <

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

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

谢谢。

标签: htmljsonoauth-2.0requesttoken

解决方案


你想通过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


推荐阅读