html - 如何处理来自 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 页面处理?
谢谢。
解决方案
你想通过http get获取访问令牌有点奇怪。也许这就是问题所在,您是在谈论这个网站吗?https://anilist.co/
https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/authorization-code-grant
- 用户通过您的 oAuth2 登录链接导航到他们的网站
- 他们登录,添加授权,然后浏览器重定向到您的回调 url
- 您将身份验证代码更改为通过 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
推荐阅读
- grails - 以编程方式编辑 resources.groovy 文件
- jquery - 选择该选项时仅更改一个选项的颜色
- php - 函数 Hook add_post_meta ACF Post 对象
- c++ - vsperfcmd.exe 计算代码覆盖率不准确
- android - 如何授予android仪器测试权限?
- c++ - 从 C++ 中的文本文件中读取
- angular - 返回一个模拟http响应而不是angular4中的服务器调用
- angular - 如何使 routerLink 在活动时转到不同的链接?
- javascript - 我如何使用 javascript 或 jquery 将 jsp 页面发送到 spring 控制器(使用标签)?
- c - 如何在 C 中的数组中连接整数二进制值?