Вход на расширение chrome через веб-сайт с усилением AWS - PullRequest
2 голосов
/ 16 февраля 2020

Я создаю расширение chrome и пытаюсь реализовать вход в систему и регистрацию пользователя. Изначально у меня была функция регистрации и входа во всплывающей части моего расширения chrome, но после изучения некоторых наиболее популярных расширений chrome, таких как Grammarly и Honey, я понял, что они используют свои веб-сайты для входа и регистрации. пользователи. Я решил сделать то же самое по разным причинам.

Я использую React js как для своего сайта, так и для всплывающего окна. Я использую AWS -Amplify для обработки входа в систему, регистрации и пользовательских сеансов. Когда я открываю всплывающее окно, я проверяю сеанс пользователя с помощью await Auth.currentSession(); после входа на мой сайт с помощью await Auth.signIn(email, password);. Однако это не работает. Я прочитал документы Amplify, но не смог найти ответ. У меня во всплывающем окне есть функция, требующая доступа к AWS услугам.

Как я могу использовать AWS -Укрепить, чтобы войти в мое расширение chrome через мой веб-сайт?

1 Ответ

0 голосов
/ 01 мая 2020

В * 1011 есть параметр конфигурации. Укажите, где вы можете переопределить хранилище токенов по умолчанию (в браузере это localStorage)

class MyStorage {
    // the promise returned from sync function
    static syncPromise = null;
    // set item with the key
    static setItem(key: string, value: string): string;
    // get item with the key
    static getItem(key: string): string;
    // remove item with the key
    static removeItem(key: string): void;
    // clear out the storage
    static clear(): void;
    // If the storage operations are async(i.e AsyncStorage)
    // Then you need to sync those items into the memory in this method
    static sync(): Promise<void> {
        if (!MyStorage.syncPromise) {
            MyStorage.syncPromise = new Promise((res, rej) => {});
        }
        return MyStorage.syncPromise;
    }
}

// tell Auth to use your storage object
Auth.configure({
    // REQUIRED - Amazon Cognito Region
    region: process.env.REACT_APP_AWS_REGION,

    // OPTIONAL - Amazon Cognito User Pool ID
    userPoolId: process.env.REACT_APP_COGNITO_USER_POOL_ID,

    // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
    userPoolWebClientId: process.env.REACT_APP_COGNITO_USER_POOL_CLIENT_ID,

    // OPTIONAL - customized storage object
    storage: MyStorage
});

Дополнительная информация здесь

То, что вы могли бы сделать, примерно так, используя chrome.store API

export class TokensStorage {
  static setItem(key, value) {
    chrome.storage.local.set({[key]: JSON.stringify(value)}, () => {
      console.log('token stored');
    });
  }
  // get item with the key
  static getItem(key) {
    return new Promise((resolve, reject) => {
      chrome.storage.local.get([key], (result) =>  {
        resolve(result)
      });
    })
  }
  // remove item with the key
  static removeItem(key) {
    chrome.storage.local.remove(key, () => {
      console.log("item removed");
    })
  }
  // clear out the storage
  static clear() {
    chrome.storage.local.clear(() => {
      console.log("storage cleared");
    })
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...