Я интегрировал Apollo GraphQL с parse-сервером, используя облачный код.Теперь я хотел бы показать мутацию аутентификации (в облачном коде), которая примет facebook authData
и аутентифицирует пользователя, чтобы он мог вернуть sessionToken
.
GraphQL здесь вторичен - онпросто контекст, объясняющий, почему мне нужно делать все это в облачном коде (также я использую хостинг-сервер parse-сервера и облачный код - единственный разумный способ заставить работать GraphQL).
, чтобы показать большездесь подробно описывается, как выполняется интеграция https://github.com/ciekawy/parse-server-back4app-graphql-boilerplate
, и чтобы не помещать просто ссылку, app.js
в папке cloud
выглядит как
var fs = require("fs");
var path = require("path");
var apollo_server_express = require("apollo-server-express");
var graphql_tools = require("graphql-tools");
var bodyParser = require("body-parser");
var cors = require("cors");
var resolvers = {
Query: {
hello() { return "Hello world!"; }
}
};
var schema = graphql_tools.makeExecutableSchema({
typeDefs: fs.readFileSync(path.join(__dirname, './graphql/schema.graphql'), 'utf8'),
resolvers: resolvers
});
app.use('/graphql', cors(), bodyParser.json(), apollo_server_express.graphqlExpress({ schema: schema }));
app.use('/graphiql', apollo_server_express.graphiqlExpress({
endpointURL: '/graphql'
}));
и т. д. для resolvers
Я хотел бы добавить
Mutation: {
authenticate(obj, args, context) {
// here call some parse-server link with
}
}
Я пытался использовать linkWith
по-разному, но безуспешно.
ОБНОВЛЕНИЕ: согласно обсуждениям на сервере синтаксического анализаgithub то, что я пытаюсь сделать, может даже не поддерживаться.С лучшим пониманием внутренних функций я мог бы открыть билет там.
Два возможных обходных пути, которые я вижу (хотя я не был бы счастлив с ними)
просто используйте REST дляoauth signup / login (основным недостатком здесь является невозможность атомарной инициализации учетной записи - т. е. создавать дополнительные структуры пользовательских данных, а другой - невозможность полностью перейти на GraphQL)
сделатьобратный вызов REST из облачного кода; мутация GraphQL в себя