#angular #authentication #request #nativescript #nativescript-angular
#angular #аутентификация #запрос #nativescript #nativescript-angular
Вопрос:
ПРАВКА 4: я смог решить проблему. Я не уверен, в чем именно заключалась проблема. В любом случае, я попытаюсь описать, что заставило меня наконец решить проблему. Прежде всего, я попытался создать его на ios, и когда я, наконец, смог это сделать, у меня возникла ошибка, которая сообщила мне, что у меня нет разрешений на выполнение http-запросов из ios. Я решил это, добавив следующее в info.plist
файл
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
...
</dict>
После этого я не менял идентификатор приложения, потому что я делал облачные сборки, просто измените его или перейдите к локальным сборкам.
Удалены платформы, перехваты и папки node_modules.
npm i
в корневой папке. Еще один build
, и он чудесным образом снова заработал.
Описание: Я использую общий код для приложения nativescript-angular. Вход в веб-приложение работает нормально, хотя в мобильном приложении не так сильно. Я выполняю аутентификацию через Laravel API. Предполагается, что он возвращает токен.
Запрос возвращает null и никаких признаков от серверной части, что запрос туда попадает.
Я искал и перепробовал тысячи решений, я вроде как новичок в Angular и Nativescript, так что это все еще может быть что-то базовое.
Я NativeScriptHttpClientModule
импортировал и вставил в массив поставщиков @NgModule
в app.module.tns.ts
import { NativeScriptHttpClientModule } from "nativescript-angular/http-client";
Вот где у меня проблема, единственные ошибки, выданные в tns preview --bundle
команде, после того, где проблема. Пожалуйста, ознакомьтесь с комментариями ниже.
В authentication.service.ts
файле
login(email: string, password: string) {
let data = {
'email': email,
'password': password
};
// Email and password get through here fine.
return this.http.post<any>(`${env.config.apiUrl}/api/login`,
this.getFormUrlEncoded(data))
. pipe(map( (user) => {
// -> returns user=null and the only error I get
is relative to the code below, error TS2339: Property
'token' does not exist on type '{}'
if (user amp;amp; user.token) {
this.storage.setItem('currentUser', JSON.stringify(user));
this.currentUserSubject.next(user);
}
return user;
}).catch(error => Observable.throw(error)));
}
Редактировать:
Я зарегистрировался в login.component.tns.ts
файле
login() {
console.log(this.f.password.value);
this.authenticationService.login(this.f.email.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
this.router.navigate([this.returnUrl]);
},
error => {
this.alertService.error(error);
this.loading = false;
});
}
ПРАВКА 2:
Я думаю, это как-то связано с приложением предварительного просмотра tns, я пытаюсь создать приложение локально, чтобы узнать, смогу ли я успешно войти в систему.
ПРАВКА 3: я успешно создаю приложение и запускаю devtools с помощью Nativescript Sidekick на моем физически подключенном устройстве Android. У меня нет ошибок, и на самом деле я думаю, что запросы отправляются, хотя они сохраняются со статусом Ожидание навсегда.
Опять же, в веб-приложении все работает нормально
Скриншот Chrome DevTools, показывающий, что запросы отправляются
Комментарии:
1. Похоже, вы получаете пустой ответ от сервера. Вы подтвердили, что запрос отправляется?
2. Вы
subscribe
кудаlogin
угодно?3. Эй, я подписываюсь на
login.component.tns.ts
,this.authenticationService.login(some_data).pipe(first()).subscribe(some_data => {...})
4. @theMayer Я на самом деле не думаю, что запрос отправляется, и я не знаю почему, ошибок не выдано… Если я делаю запрос post через postman или через веб-приложение, все работает должным образом
5. Проверьте
network
вкладку в инструментах отладчика (ctrl shift i) во время выполнения запроса — это скажет вам наверняка, что происходит, а что нет.