0

我已经非常努力地寻找这个问题的现有答案,因为我觉得我犯了一个愚蠢的错误,所以请让我知道是否已经问过这个问题并且我还没有找到它。

我正在尝试制作一个需要访问 OAuth Reddit API 的小型已安装应用程序,并且由于它已安装,因此必须通过隐式授权流程进行。

这是我尝试使用的过程:

我让用户打开此 URL(已删除私人信息):

https://www.reddit.com/api/v1/authorize?client_id=[client_id]&response_type=token&state=[random_state_data]&redirect_uri=http://localhost:3000&scope=read

但是当用户在授权后被重定向时,它会转到一个如下所示的 URL:

http://localhost:3000/#access_token=[token]&token_type=bearer&state=[random_state_data]&expires_in=3600&scope=read

问题是访问令牌在查询中?片段标识符(#)之后的字符串,因此我无法从托管在端口 3000 上的服务器访问它。我在处理身份验证的方式上是否犯了错误?或者是更微妙的东西?

提前感谢您的帮助,如果您需要更多信息或者我在问这个问题时犯了错误,请告诉我。

4

1 回答 1

0

事实证明,这是手册中遗漏某些内容的经典案例。

在有关 Reddit 的隐式授权流程的信息中:

如果成功,来自此请求的响应将被编码到具有以下值的片段中:

所以这完全是我没有接受的故意行为。我想我只需要做一些 Javascript 魔法就可以将令牌从片段中获取到我的服务器。

对不起,如果我浪费了任何人的时间。

于 2020-09-07T06:25:44.037 回答