Saya menggunakan Facebook API untuk login di aplikasi reaksi saya. Frontend adalah reactJS dan backend adalah nodeJS. Pada login pertama saya mengirim url nama, email, dan foto profil ke nodeJS. Masalahnya adalah nodeJS tidak mengurai url dengan cara yang benar, meskipun dikirim dengan benar dari reactJS (menggunakan POST).

Ini terlihat seperti ini:

{'{"name":"testname","email":"test@mail.com","profilePhoto":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid': '1111111111111111', height: '50', width: '50', ext: '1111111111', hash: 'AeRNlZmAF4w5mT5r"}' }

Seharusnya terlihat seperti ini:

{"name":"testname","email":"test@mail.com","profilePhoto":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=1111111111111111&height=50&width=50&ext=1111111111&hash=ArS0tErHD8Tg9l3s"}"

Jadi dengan kata lain seharusnya tidak membagi url menjadi beberapa bagian, karena saya ingin memiliki url asli di database.

Ini adalah server.js

const express = require("express");
const config = require("../config");
const knex = require("../knex/knex");
const api = require("./api");
const cors = require("cors");
const bodyParser = require("body-parser");

const app = express();

app.use(cors());
app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
});

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use("/api", api.router);

app.listen(config.port, config.host, () => {
  console.log(Server is running on http://${config.host}:${config.port});
});

Dan ini adalah apiRequest.js di reactJS:

const apiRequest = (apiPath, options) => {
  const mainOptions = {
    headers: {
      Accept: "application/json"
    },
    mode: "cors",
    credentials: "include"
  };

  const finalOptions = merge(mainOptions, options);

  if (finalOptions.body) {
    finalOptions.body = JSON.stringify(finalOptions.body);
    finalOptions.headers["Content-Type"] = "application/x-www-form-urlencoded";
  }

  const requestUrl = `http://${backendConfig.host}:${
    backendConfig.port
  }/api/${apiPath}`;
  console.log(requestUrl, finalOptions);
  return fetch(requestUrl, finalOptions).then(response =>
    solveErrors(response)
  );
};

Apakah pendekatan ini bagus atau adakah cara yang lebih baik untuk menyimpan url di database?

0
Crabzmatic 20 Maret 2019, 03:12

1 menjawab

Jawaban Terbaik

Memecahkannya!

Saya menghapus credentials: "include" dan mengubah "application/x-www-form-urlencoded" menjadi "application/json"

0
Crabzmatic 20 Maret 2019, 23:41