粒子光子API:获取客户令牌可在Postman上使用,但不适用于axios

时间:2019-05-08 08:56:13

标签: react-native curl axios postman particle-photon

我正在开发结合了光子粒子的react native应用程序。 遵循两足式身份验证的文档;在配置设备之前,我需要获取声明代码。

curl -X POST \
  https://api.particle.io/oauth/token \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=client_credentials&client_id=client_id&client_secret=clsecret&scope=customer%3Demail%40gmail.com'

当我使用CURL甚至邮递员进行请求时,我得到了期望的结果。但是,当我在React Native(iOS)中使用axios尝试此操作时,总是收到以下错误:Invalid or missing grant_type parameter

下面的代码是我的React Native代码,它正在检索数据。如您所见,我正在传递grant_type。

costumerToken() {
    const route = `${this.route}/oauth/token`;
    const headers = {
        "Accept": "application/json",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    const body = {
        "grant_type": "client_credentials",
        "client_id": this.clientId,
        "client_secret": this.clientSecret,
        "scope": `customer=${this.costumerEmail}`
    }
    console.log(route, headers, body);
    return axios.post(route, body, {headers: headers})
        .then(res => {
            return Promise.resolve(res);
        })
        .catch(err => {
            return Promise.reject(err.response);
        });
}

怎么了?

1 个答案:

答案 0 :(得分:0)

当将 numbers = [] def print_numbers(x): i = 0 counter = x while i < counter: print "top of the list" numbers.append(i) print i i += 1 #print "Numbers nows:", numbers #print"At the bottom i is %d" % i #print "The numbers:" y = raw_input("Pleast enter the number:") print_numbers(y) #for num in numbers: # print num 作为Object主体进行传递时,它将作为JSON发送,但是Particle API期望它为axios.post()Axios docs会更深入地探讨这个主题。为了使其正常工作,您可以将代码更改为:

application/x-www-form-urlencoded