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