如何处理来自oauth2令牌请求的html响应?

时间:2019-04-09 16:27:04

标签: html json oauth-2.0 request token

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

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

…像这样导入http的地方:

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

这会导致错误:

  

SyntaxError:JSON中的意外令牌<位于JSON.parse位置0处

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

但是我的问题是:一个人如何发送oauth2令牌请求并以html页面的形式处理响应?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

  • 您尝试通过http get获取访问令牌-在这里,您得到了不受支持的方法/ 404 / etc错误
  • 或者您正试图从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