CORS ошибка локального тестирования обновления документа AngularFirestore в Angular 6 Service - PullRequest
0 голосов
/ 15 сентября 2018

Я немного новичок в Firebase. Код, который я написал, может без проблем выполнить анонимный вход и построен на основе примера кода для анонимного входа и ролей пользователей с использованием Angular6 и AngularFire. Но когда я пытаюсь обновить документ пользователя в базе данных Firestore, я получаю приведенную ниже ошибку CORS. обновить документ из службы Angular (локальное тестирование).

macOSX 10.13.2 Angular: 6.1.4 @ angular / cli 6.1.5
"@ angular / fire": "^ 5.0.0" "firebase": "^ 5.5.0"

Служба аутентификации в моем угловом приложении может успешно завершить анонимную авторизацию, однако, когда я пытаюсь обновить документ пользователя с ролью по умолчанию, я получаю сообщение об ошибке CORS. Это при использовании ng -serve на моей локальной машине.

import * as firebase from 'firebase/app';

import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireModule } from 'angularfire2';
import { AngularFirestore, AngularFirestoreDocument } from 'angularfire2/firestore';

import { User } from './user'; // class definition



@Injectable({
  providedIn:'root'
})
export class AuthService implements OnInit{



  authState: any = null;
  user: any;

  constructor(

    public afAuth: AngularFireAuth,
    private afs: AngularFirestore,
    private router: Router,
  ) {

      this.afAuth.authState.subscribe((user)=> {
        if (user) {
          // User is signed in.
          console.log('authStateChange: logged in',user);
          this.user= user;
          this.authState= user;

        } else {
          // User is signed out.
          console.log('authStateChange not logged in:',user);
          this.anonymousLogin();
        }
      });
    }

    ngOnInit(): void {

    }
    anonymousLogin():any {
      return this.afAuth.auth.signInAnonymously()
        .then((user) => {
          this.authState = user;
          user['name']='anon-'+ this.currentUserId;
          user['email']='';
          user['roles']={guest: true};
          this.updateUserData(user);
          console.log('anonymous complete:',user)
        })
        .catch(error => console.log(error));
    }


  private updateUserData(user) {
    // Sets user data to firestore on login
    const userRef: AngularFirestoreDocument<User> = this.afs.doc<User>(``users/${this.currentUserId}``);

    const data = {
      email: user.email,
      name: user.name,
      roles: user.roles
    }

    // return userRef.update(data)  // also did not workvs below
    return userRef.set(data, { merge: true })
  }

  // Returns current user UID
  get currentUserId(): string {
    return this.authenticated ? this.authState.uid : '';
  }
}

Я получаю ошибку:

Запрос на перекрестное происхождение заблокирован: одна и та же политика происхождения запрещает чтение удаленный ресурс на https://firestore.googleapis.com/google.firestore.v1beta1.Firestore/Write/channel?database=projects%2Fproject-name%2Fdatabases%2F(default)&VER=8&RID=14866&CVER=22&X-HTTP-Session-Id=gsessionid&%24httpHeaders=Authorization%3ABearer%20eyJhbGciOiJSUzI1NiIsImtpZCI6IjBmNTVkZWZlOWU5YzU2ZmRhZTRkOGY0MDFjZjQ5Njc4YzE2N2MzYWEifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZWxldmF0ZWQtaG9ub3ItODU5IiwicHJvdmlkZXJfaWQiOiJhbm9ueW1vdXMiLCJhdWQiOiJlbGV2YXRlZC1ob25vci04NTkiLCJhdXRoX3RpbWUiOjE1MzY4Njk0NjUsInVzZXJfaWQiOiJqT29TU3h1eHZKY0hNWmJpb2FJRmh2SnZRQTAzIiwic3ViIjoiak9vU1N4dXh2SmNITVpiaW9hSUZodkp2UUEwMyIsImlhdCI6MTUzNjg2OTQ2NSwiZXhwIjoxNTM2ODczMDY1LCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7fSwic2lnbl9pbl9wcm92aWRlciI6ImFub255bW91cyJ9fQ.jGC3iOUh76M4ZMFpq35NF8ws9rYlzyOl_jGlTLD8FkTlGhO80XbWs1b1h6xCqKXgTdkpFO4063iQCS5iT54S4lDQpA5kekWJu41ft714MqUIvrnLlTcnyCf22u90n-K2thWmGxk4SUoaGcjNFuWB9zLCMp0MbuSoN1amxpj8oihLQBkQZktYZw60ygP3T1fEXx1YlpD7_F8JXwfPcu5RDRt00OALmXTgpdZrc9y3MNb6NZXx7A7zRQCWI3cbOFCOYABKJmSDuyvhTHgX7DHGYohS6_K-hgg1SR7NQlZcJsTwjZSZlaiVxR4DAJEQM7KBzK2HYbKXcDNoLWS371vcsQ%0D%0AX-Goog-Api-Client%3Agl-js%2F%20fire%2F5.0.4%0D%0A&zx=b3k72ygb3lj9&t=1. (Причина: запрос CORS не выполнен).

Я читал другие посты, в которых говорится, что о подобной ошибке можно неточно сообщить, если класс отправляется против универсального объекта (пробовал ... не решил проблему). Пробовал и установить и обновить метод безрезультатно.

...