【问题标题】:React Native : Fetch Can't retrieve value of token when passed by referenceReact Native:Fetch通过引用传递时无法检索令牌的值
【发布时间】:2020-12-10 10:38:21
【问题描述】:

我正在尝试从下面的代码中获取响应。预期的响应是 400。当我在 fetch 调用中明确输入 ut 时,它可以工作。但是当我将 ut 作为变量传递时,出现以下错误

注意:retrieveUserToken() 从 AsyncStorage 获取令牌。

什么有效:当我在标题中输入这个时:它有效。

'Authorization': "Bearer eyJskfjvksndvjnsdknvlkandlkcnals"

Doesn't work: 

```'Authorization': "Bearer "+ ut

```onPress={async () => {
                       

                        const ut = await retrieveUserToken("token")
                        const data = {id: "myID", password:"mypass"}

                        await fetch("http://MY-URL", {
                          method: "POST",
                          
                          headers: {
                            "Content-Type": "application/json",
                            'Authorization':
                              "Bearer " + ut
                          },
                          body: JSON.stringify(data),
                        }).then(response => JSON.stringify( response))
                        .then(result => console.log(result))
                        .catch(error => console.log('error', error));
                      }}


ERROR:  {"type":"default","status":401,"ok":false,"headers":{"map":{"content-length":"0","server":"Kestrel","www-authenticate":"Bearer error=\"invalid_token\"","date":"Fri, 21 Aug 2020 03:23:00 GMT","content-type":"text/plain"}},"url":"http://63.35.183.253:9054/api/appointment","bodyUsed":false,"_bodyInit":{"_data":{"size":0,"offset":0,"blobId":"F5F055F9-8C4C-434D-AA39-11B58B0CE290","type":"text/plain","name":"appointment.txt","__collector":{}}},"_bodyBlob":{"_data":{"size":0,"offset":0,"blobId":"F5F055F9-8C4C-434D-AA39-11B58B0CE290","type":"text/plain","name":"appointment.txt","__collector":{}}}}

【问题讨论】:

    标签: javascript reactjs react-native fetch


    【解决方案1】:

    "www-authenticate":"Bearer error=\"invalid_token\"

    这意味着ut === 'error=\"invalid_token\"'。即,您在检索令牌时遇到问题。当你回头看时:

    const ut = await retrieveUserToken("token")

    您确定要将字符串 "token" 作为arg 传递吗?

    【讨论】:

    • 你是对的。我想 1 从异步存储中检索令牌(这就是 retrieveUserToken() 所做的),然后将令牌传递给 fetch 以访问资源。这使代码更加动态。我该如何解决这个问题?
    • 如何从字符串中获取引号?当我记录这个 const newHeader = Bearer ${token}; console.log(newHeader),我得到:承载“eyJsbfhbjsfhb”我期待承载eyJsbfhbjsfhb。我该如何纠正这个问题?
    • 不用担心。我已经解决了。我解析了令牌以将其作为 JSON 对象获取。我不知道我现在该不该哭。真是太痛苦了。非常感谢达尔莫
    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2018-11-23
    • 2017-10-03
    相关资源
    最近更新 更多