【发布时间】:2019-08-02 20:15:32
【问题描述】:
我已经使用云代码将 Apollo GraphQL 与解析服务器集成。我现在想公开身份验证突变(在云代码中),它将接受 facebook authData 并对用户进行身份验证,因此它可以返回 sessionToken。
GraphQL 在这里是次要的——它只是解释为什么我需要在云代码中完成所有这些的上下文(我也在使用解析服务器托管服务提供商,并且使用云代码是让 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,但没有成功。
更新:根据parse-server's github 上的讨论,我正在尝试做的事情甚至可能不受支持。更好地了解内部结构后,我可以在那里开票。
我看到了两种可能的解决方法(尽管我对它们不满意)
-
仅使用 REST 进行 oauth 注册/登录(这里的主要缺点是无法提供原子帐户初始化 - 即创建额外的用户数据结构,另一个是无法完全迁移到 GraphQL)
执行从云代码 GraphQL 突变到自身的环回 REST 调用
【问题讨论】:
-
您是否面临任何消息错误?与未经授权或空结果相关的内容?
-
取决于我使用的方法,即:
ParseError { code: 252, message: 'This authentication method is unsupported.' },最接近的是user already exists- 但仍有可能在尝试验证 FB 令牌之前引发错误。 -
您使用的是哪个 Parse 服务器版本?
-
目前是 2.7.4。可供我使用的最新版本是 2.8.4 测试版
标签: javascript graphql parse-server apollo