尝试与oauth 2令牌交换授权代码时收到400错误请求

时间:2018-02-12 15:51:59

标签: post react-native oauth-2.0

我试图连接到rss api提供商' Inoreader'我正在使用本地反应。我能够获得授权代码,但是当我提交与令牌交换的帖子请求时,我收到400个错误请求。响应文本未定义。我查了一下,他们的所有参数都与我的应用程序相匹配。我试过了。  这是他们的文档:https://www.inoreader.com/developers/oauth

fetch('https://www.inoreader.com/oauth2/token', {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Host': 'www.inoreader.com',
            'Content-length': '217',
            'User-Agent': navigator.userAgent,
            'Content-type': 'application/x-www-form-urlencoded'

        },
        body: JSON.stringify({
            'code':`${this.state.auth_code}&redirect_uri=${this.state.gizmos}&client_id=${this.state.userId}&client_secret=${this.state.userKey}&scope=&grant_type=authorization_code`
        })
    })
    .then((res) => {
        this.setState({
            userName: res.access_token
        });

        console.log(res.status);
    });

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到了三个问题

  1. 您在Inoreader示例中有一个固定的Content-length值(217)。这样,服务器只读取请求的217个字符,如果请求更长,则其余部分将被丢弃。
  2. 请求Content-typeurlencoded,但您可能不会对值进行URL编码。您可以使用[encodeURIComponent()][1]功能执行此操作。
  3. /token端点要求您发送客户端密钥,但您的应用程序无法保证其安全,因此该密码很容易受到损害。当他们在指南中写道时,请求应该从后端完成。或者您可以要求他们支持OAuth2 for native apps