Как получить токен android на ioni c 4? - PullRequest
2 голосов
/ 11 января 2020

Здравствуйте, я использую плагин fcm ioni c native, он хорошо работает с android 7 и ниже, но на android 8 Oreo и выше он не может получить токен устройства, в чем может быть проблема?

1 Ответ

2 голосов
/ 11 января 2020

Вы можете использовать приведенный ниже код и надеяться, что он сработает для вас:

export interface AuthResponseData {
  kind: string;
  idToken: string;
  email: string;
  refreshToken: string;
  localId: string;
  expiresIn: string;
  registered?: boolean;
}

export class AuthService implements OnDestroy {
  private _user = new BehaviorSubject<User>(null);

  get token() {
    return this._user.asObservable().pipe(
      map(user => {
        if (user) {
          return user.token;
        } else {
          return false;
        }
      })
    );
  }

  constructor(private http: HttpClient) { }

  signup(email: string, password: string) {
    return this.http
      .post<AuthResponseData>(
        `https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=${yourAPIKey}`,
        { email, password, returnSecureToken: true })
      .pipe(tap(this.setUserData.bind(this)));
  }

  login(email: string, password: string) {
    return this.http
      .post<AuthResponseData>(
        `https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=${yourAPIKey}`,
        { email, password, returnSecureToken: true })
      .pipe(tap(this.setUserData.bind(this)));
  }

  private setUserData(userData: AuthResponseData) {
    const expirationTime = new Date(new Date().getTime() + +userData.expiresIn * 1000);
    const user = new User(userData.localId, userData.email, userData.idToken, expirationTime);
    this._user.next(user);
    this.storeAuthData(userData.localId, userData.idToken, expirationTime.toISOString(), userData.email);
  }

  private storeAuthData(userId: string, token: string, tokenExpirationDate: string, email: string) {
    const data = JSON.stringify({ userId, token, tokenExpirationDate, email });
    Plugins.Storage.set({ key: 'authData', value: data });
  }
}

И вы можете использовать эту ссылку для получения дополнительной информации

...