【问题标题】:Can't generate new accessToken from refreshToken even though promise is 200即使承诺为 200,也无法从刷新令牌生成新的访问令牌
【发布时间】:2017-07-03 12:32:43
【问题描述】:

我正在尝试从 refreshToken 生成新的 accessToken。使用 Oauth2 登录。我有这个代码:

  componentWillMount(){

    AsyncStorage.multiGet([USER_TOKEN, USER_REFRESH_TOKEN,USER_REMEMBERED]).then((data) => {
      console.log(data)
      const userRemembered = JSON.parse(data[2][1])
      console.log(userRemembered)
      const userAccessToken = data[0][1]
      console.log(userAccessToken)
      const userRefreshToken = data[1][1]
      console.log(userRefreshToken)


      if (!userAccessToken) {
        fetch("SOME_URL", {
          method: "POST",
          headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({
            refreshToken: userRefreshToken
          })
        })
        .then((response) => {response.json(); console.log(response)}) //this logs 200 
        .then(responseData => {
          console.log(responseData) //this logs undefined
        })
        .catch((error) => {
          console.log(error)
        })
      }
      else{
          this.setState({
            token:userAccessToken,
            refreshToken: userRefreshToken,
            isLoggedIn:userRemembered
          })
        console.log('token not expired')
        console.log(this.state);
        this.changeRoute(this.state)
      }
    })
  }

在 Insomnia 中对其进行测试时,一切正常,我能够从 refreshToken(我使用 AsyncStorage 存储的)生成 accessToken。

【问题讨论】:

    标签: javascript reactjs asynchronous react-native fetch


    【解决方案1】:

    你忘了回来

    .then((response) => {console.log(response); return response.json(); })
    

    如果您在箭头函数定义中有{},则它会作为语句块进行交互。所以需要手动返回。 Docs.

    (param1, param2, ..., paramN) => { 语句}

    (param1, param2, ..., paramN) => 表达式

    // 等价于:(param1, param2, ..., paramN) => { return expression; }

    【讨论】:

    • 非常感谢。一开始很奇怪,因为如果我没有记录response 本身,responseData 就没有被记录。 return response.json() 已修复。谢谢
    猜你喜欢
    • 2021-12-17
    • 2020-08-11
    • 2020-04-14
    • 2023-04-04
    • 2019-05-31
    • 2019-03-08
    • 2015-09-28
    • 2017-10-28
    • 2019-06-29
    相关资源
    最近更新 更多