Как я могу получить токен доступа к mapbox от внутреннего сервера вместо жесткого кодирования в операторе импорта модуля? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть внутренний сервер, на котором зашифрован токен доступа к mapbox. У меня есть конечная точка API, которая расшифровывает и возвращает токен доступа (это защищено системой входа в систему). По сути, я хочу отправить http-запрос на получение этого токена, а не указывать его в файле mapPage.module.ts.

Я осмотрел различные темы и, похоже, не могу найти ссылок на ионные, похоже, есть много примеров реакции.

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

https://github.com/SebastianM/angular-google-maps/issues/882

@NgModule({
  declarations: [
    HomePage,
    MapToIterablePipe
  ],
  imports: [
    IonicPageModule.forChild(HomePage),
    ComponentsModule,
    NgxMapboxGLModule,
    HttpModule
    NgxMapboxGLModule.withConfig({
       accessToken: 'my-token-here'
    })
  ]
})
export class HomePageModule {}

Я просто хочу удалить объявление и указать его после того, как пользователь вошел в приложение.

Ожидаемый поток. Пользователь открывает приложение -> вводит учетные данные для входа -> вход в систему выполнен -> токен доступа получен с сервера -> карта загружается с токеном доступа.

1 Ответ

0 голосов
/ 05 апреля 2019

Так что мне удалось это выяснить.

После того, как аутентификация прошла, я извлек токен с внутреннего сервера и сохранил его в сервисе инъекций.

import { Injectable } from '@angular/core';

@Injectable()
export class StorageService {
    private mapboxToken: string;

    public setMapboxToken(newValue) {
        if( newValue != null) {
            this.mapboxToken = newValue;
        }
    }

    public getMapboxToken() {
        return this.mapboxToken;
    }
}

Затем я ввел этот сервис на страницу, где отображалась карта. Я установил функцию получения на странице, которая возвращает значение из службы хранения.


export class HomePage {
    map;
    mapCenterCoords = [0, 0];
    constructor(public storage: StorageService) {

    }

    public get mapboxToken() {
        return this.storage.getMapboxToken();
    }
}

В html-странице, когда я настраиваю объект карты, есть свойство для токена доступа. Я просто установил это для функции получения в файле .ts.

<ion-content class='background'>
    <mgl-map id='map' 
        [accessToken]="mapboxToken"
        [style]="'mapbox://styles/mapbox/dark-v9'"
        [zoom]="[15]"
        [center]='mapCenterCoordinates'
        (load)="map = $event"
    >
</ion-content>
...