Angular-Cli Firebase Hosting: как принять строку запроса с внешнего сервера - PullRequest
0 голосов
/ 14 мая 2018

location.href это получает отправленный URL, который я могу записать, это работает на стороне браузера, т.е.https://xxxx.firebaseapp.com/?page=123

Однако, если я запрашиваю его из внешнего источника, т.е. сценария php на другом сервере <?php get_content('https://xxxx.firebaseapp.com/?page=abcde'); ?>, это, похоже, не работает.

Угловой код ...

    import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';


  constructor(
    public location: Location
  ) {
var url =  window.location.href
....//save the info
}

1 Ответ

0 голосов
/ 22 августа 2018

Вы должны использовать функции Firebase, чтобы сделать это здесь, ссылка на учебник.https://firebase.google.com/docs/functions/get-started.

Так что, если бы мне нужно было создать новую папку и выполнить

npm i -g firbase-tools;
firebase init;

, затем выполнить настройку с использованием firbase init, выбрав в качестве выбора правильные «функции» проекта (дляваш реальный проект вам может потребоваться выбрать несколько опций)

затем вы переходите в папку функций /myproject/functions/index.js

Это некоторый код, который я использую и который использует приведенные выше инструкции для сохранения данных в базе данных огняDB.

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp();


// Take the text parameter passed to this HTTP endpoint and insert it into the
// Realtime Database under the path /messages/:pushId/original
exports.addMessage = functions.https.onRequest((req, res) => {
  // Grab the text parameter.
  const data = req.query;
  // Push the new message into the Realtime Database using the Firebase Admin SDK.
  return admin.database().ref('/paymentslog').push({data}).then((snapshot) => {
    // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
    return res.redirect(303, snapshot.ref.toString());
  });
});

Таким образом, данные помещаются в /paymentslog в базе данных Firebase ... мой код настроен так, что ВСЕ в строке запроса добавляется динамически

Так что есливы использовали PHP (file_get_contents) или AngularCli (http.post), где выполнялись другие, где бы вы просто использовали заголовок post http для вашего URL, используя квесты вроде https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?id=9955&&price=123&foo=hello

и сохраните как

/paymentslog/randomkey/id = 9955
/paymentslog/randomkey/price = 123
/paymentslog/randomkey/foo = hello

«Случайный ключ» происходит из-за того, что я использую .push

Я мог бы вместо этого сделать ref('/paymentslog/' + id).set, чтобы создать

/paymentslog/9955/price = 123
/paymentslog/9955/foo = hello

Когда вы будете готовы проверить это, вы можетесделать firebase deploy, который загрузит код в ваш проект

Я должен отметить, что вам не нужны учетные данные API, потому что initb firebase устанавливает их для вас.

Для вашего проекта AngularCLI это пример кода для работы http.post

private form_send_url:string = 'https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage';

this._http.post(
  this.form_send_url,
  {
    'id':encodeURI("9955"),
    'price':encodeURI("123"),
    'foo':encodeURI("hello")
  },
  {'Content-Type': 'text/html'}
).then(data => {
  console.log(data.status);
  console.log(data.data); // data received by server
  console.log(data.headers);
}).catch(error => {
  console.log(error.status);
  console.log(error.error); // error message as string
  console.log(error.headers);
}).then(() => {
  this._navCtrl.push(goto new page);
});

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...