Как обновить пользовательские утверждения, если они установлены в облачной функции Google? - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь установить пользовательские утверждения в функции Google в Firebase.Вот код, который у меня есть.

admin.auth().setCustomUserClaims(user.uid,{
                activeNetworkProfile: networkProfile,
                activeCompanyProfile: companyProfile,
                activeUserProfile: profiles[0]
            });

На стороне клиента у меня есть следующее:

public updateProfiles(){
    return this.afAuth.idToken.pipe(
      switchMap(idToken => this.httpClient.post<any>('https://us-central1-company-database.cloudfunctions.net/updateProfiles',{
        "token": idToken,
        "np":"hzlNpVEdwqOKRTcsdfPG",
        "cp":"D7nKYrS235A9vnvfB9oD"
      }))
    );
  } 

Затем для проверки изменений были сделаны:

 public validateToken(){
    return this.afAuth.idToken.pipe(
      switchMap(idToken => this.httpClient.post<any>('https://us-central1-company-database.cloudfunctions.net/validateToken',{
        "token": idToken
      }))
    );
  }

и на сервере у меня следующее:

 export const validateToken = functions.https.onRequest((req, res) => {
    return cors(req, res, () => {
        const db = admin.firestore();
        let token = req.body.token;
        admin.auth().verifyIdToken(token).then(decodedToken=>{
        res.status(200).send(decodedToken);
        })
        .catch(error=>{
            res.status(401).send(error.message);
        });
    });
 });

Я не получаю претензии в ответе.Я попытался принудительно обновить обновление в angularfire2, установив для параметра значение true

public getToken(){
    return this.afAuth.auth.currentUser.getIdToken(true);
  }

, но это ничего не изменило, если что-либо привело к тому, что обновление маркера firebase пошло в бесконечный цикл.

1 Ответ

0 голосов
/ 12 июня 2018

Мне удалось исправить, добавив следующий код после установки претензий.

 const metadataRef = admin.database().ref("metadata/" + user.uid);
 return metadataRef.set({refreshTime: new Date().getTime()});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...