Как получить токен доступа от OAuth, используемого в действии Google для умного дома - PullRequest
0 голосов
/ 25 октября 2018

Для своего умного домашнего действия я использовал поддельную аутентификацию, как показано в приложении codelab-smartwasher.(Для целей тестирования).Приложение работает нормально.Я создал свой собственный код для работы с моими устройствами (коммутаторами).Теперь, когда я реализую OAuth, который использует мой собственный сервер OAuth.Я не могу понять, как реализовать это в моем коде.OAuth работает по мере необходимости, когда я тестировал.Но я хочу помочь в интеграции его с Google Action.У меня проблема с получением токена доступа.Код выглядит следующим образом:

exports.fakeauth = functions.https.onRequest((request, response) => {
      const responseurl = util.format('%s?code=%s&state=%s',
        decodeURIComponent(request.query.redirect_uri), request.query.code,
        request.query.state);
      console.log('*********'+responseurl);
      return response.redirect(responseurl);
    });

    exports.faketoken = functions.https.onRequest((request, response) => {
      const grantType = request.query.grant_type
        ? request.query.grant_type : request.body.grant_type;
      const secondsInDay = 86400; // 60 * 60 * 24
      const HTTP_STATUS_OK = 200;
      console.log(`Grant type ${grantType}`);

      let obj;
      if (grantType === 'authorization_code') {
        obj = {
          token_type: 'bearer',
          access_token: '123access',
          refresh_token: '123refresh',
          expires_in: secondsInDay,
        };
      } else if (grantType === 'refresh_token') {
        obj = {
          token_type: 'bearer',
          access_token: '123access',
          expires_in: secondsInDay,
        };
      }
      response.status(HTTP_STATUS_OK)
        .json(obj);
        console.log('********** TOKEN **********',response);
    });

Приведенный выше код выполняется с поддельной аутентификацией.Почему не выполняется, когда я внедряю пользовательский OAuth?Нужно ли вносить какие-либо изменения в clienID и секретный код в firebase?Как получить токен доступа, возвращенный OAuth?

Пожалуйста, помогите.Я новичок в node.js.

1 Ответ

0 голосов
/ 26 октября 2018

Код авторизации, который будет возвращаться в запросах, будет находиться в заголовке как поле авторизации.Вот способ вытащить его с помощью Node.js.

function getToken(headers) {
  // Authorization: "Bearer 123ABC"
  return headers.authorization.substr(7);
}
...