Ключи доступа в объекте Javascript - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть iframe, который я отправляю объекту данных, в котором есть id_token и access_token. Объект данных прибывает нормально, и я могу получить объект с помощью прослушивателя событий. Пример кода ниже. Однако, когда я получаю объект, я пытаюсь получить доступ к элементам в объекте и получить неопределенное. Я включил в консоль javascript неиспользованное изображение объекта, которое получаю.

Я включил фрагменты разных вещей, которые я пробовал, но безрезультатно.

Отображение фрейма

const data = {
    id_token: idToken,
    access_token: accessToken
};

Приложение, которое отображается в iframe

useEffect(() => {
  window.addEventListener('message', receiveMessage, false);

  function receiveMessage(event) {
    if (event.origin !== 'https://example.com") {
      return;
    }

    let eventData = event.data;
    console.log(eventData); // The response is the object that is returned in the image below
    console.log(eventData.id_token) // The response is undefined
    console.log(eventData[id_token]) // undefined
    console.log(eventData["id_token"] // undefined
    console.log(eventData['"id_token"'] // undefined

    // All three of these displayed each individual character of the object.
    Object.keys(eventData).forEach(key => console.log(key, eventData[key]));

    Object.getOwnPropertyNames(eventData).forEach(key =>
      console.log(key, eventData[key])
    );

    for (let key in eventData) console.log(key, eventData[key]);
  }
}, []);

В основном мне нужно извлечь токены доступа и id для аутентификации. Если есть лучший способ сделать это, я весь слух.

Снимок экрана возвращаемого объекта: enter image description here

1 Ответ

0 голосов
/ 05 ноября 2019

При получении «объектов» из запросов или событий в Javascript может быть легко ошибочно принять фактические объекты из строкового сериализованного объекта в нотации JSON.

Может быть трудно определить, какие именнопри входе в консоль, как показано в примере, но инструменты браузера могут быть более полезны, как показано на рисунке.

Если вам нужно преобразовать JSON обратно в объект, используйте JSON.parse()и обрабатывать любые исключения.

obj = {a:100}
json = JSON.stringify(obj);

// print an object
console.log('Printing an Object:')
console.log(obj)

// print json
console.log('Printing a JSON string:')
console.log(json)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...