既然解析服务器是开源的,那么它背后的社区已经添加了许多很酷的功能.在原始版本(parse.com)中,我们能够使用Facebook和Twitter登录.现在,我们有Google,LinkedIn,GitHub等.
在iOS上,有2个库(PFFacebookUtils和PFTwitterUtils)允许我们在我们的应用程序中轻松使用Facebook和Twitter身份验证并创建PFUser对象.
我想允许我的用户使用他们的Google帐户登录.由于没有PFGoogleUtils库,我无法弄清楚如何使用
+ (BFTask<__kindof PFUser *> *)logInWithAuthTypeInBackground:(NSString *)authType authData:(NSDictionary<NSString *, NSString *> *)authData
Run Code Online (Sandbox Code Playgroud)
PFUser的方法.
我试着看看PFTwitterUtils和PFFacebookUtils,但没有运气.我甚至尝试使用Twitter和Facebook登录而不使用PFTwitterUtils和PFFacebookUtils,但我不知道这是不是一个好主意.
那么,这里有没有人成功地将Google身份验证与他们在iOS上的Parse应用程序集成?
谢谢
我正在尝试在本地运行的parse-server实例上测试密码重置流程.每次我发送密码重置请求时,我都会收到以下错误error: Uncaught internal server error. Trying to send a reset password but no adapter is set undefined.我知道我应该在cli-definitions中配置emailAdapter,但我不太确定我应该把它放在那里.我尝试更改ParseServer.js中的构造函数
emailAdapter: {
module: 'parse-server-simple-mailgun-adapter',
options: {
// The address that your emails come from
fromAddress: 'parse@example.com',
// Your domain from mailgun.com
domain: 'example.com',
// Your API key from mailgun.com
apiKey: 'key-mykey',
}
}
Run Code Online (Sandbox Code Playgroud)
但那没用.任何帮助是极大的赞赏!
我们计划在内部托管解析服务器,为我们正在构建的新移动应用程序提供内容服务。
此外,我们还有一些内部 REST 服务,除了我们在解析中构建的服务之外,我还希望我们的移动客户端使用这些服务。我想利用解析服务器用户、身份验证和会话管理来前置对这些内部 REST 服务的调用。
我发现云代码功能非常有限,因为它们只接受 POST,我希望客户端可以使用更 RESTful 的 api,将 1-1 映射到内部服务,这样我就可以传递请求。我创建了一个与解析服务器一起运行的快速中间件函数,它只接受传入请求,更改基本 URL,添加新标头(与身份验证相关)以及请求内部 Web 服务的路由/代理。
首先,是否可以获取解析客户端 api 来调用另一个 Express 端点?其次,在服务器端验证此调用的最佳方法是什么。
我创建了一个简单的 node.js 测试文件,在其中使用 javascript/node api 登录解析服务器,然后在休息客户端的标头中设置用户会话令牌以调用这个新端点,但寻找反馈或更好的方法。
var express = require('express');
var request = require('request');
var ParseServer = require('parse-server').ParseServer;
...
var api = new ParseServer({
...
});
app.use('/parse', api);
// Middleware function to auth request against parse and forward to other web service
app.use('/api/', function (req, res, next) {
var currentToken = req.headers['x-parse-session-token'];
//TODO, validate user token.. HOW BEST?
if …Run Code Online (Sandbox Code Playgroud) 我正在从Parse迁移到Parse服务器.我的大多数代码都没有承诺.为此,我必须useMasterKey: true为每个查询/保存发送参数:( 必要时).
对于查找和获取查询或获取对象,我没有问题,例如:
Parse.com(找到)
query.find({
success: function(results) {
//...
Run Code Online (Sandbox Code Playgroud)
解析服务器(查找)
query.find({useMasterKey: true
}).then(function(results) {
//....
Run Code Online (Sandbox Code Playgroud)
Parse.com(获取)
user.fetch({
success: function(user) {
//...
Run Code Online (Sandbox Code Playgroud)
解析服务器(获取)
user.fetch({useMasterKey: true,
success: function(user) {
//....
Run Code Online (Sandbox Code Playgroud)
问题在于每个功能:
Parse.com(每个)
query.each(function(comment) {
//...
Run Code Online (Sandbox Code Playgroud)
解析服务器(每个)
query.each({useMasterKey: true
}).then(function(comment) {
//....
Run Code Online (Sandbox Code Playgroud)
这是行不通的.
谢谢
我有一个应用程序设置,用户可以登录和注销(这是通过heroku托管的Parse服务器,使用Parse框架处理).
要登录,用户输入凭据,如果服务器验证它们,则segue将它们移动到另一个viewcontroller.注销用户退出应用程序并将其转移回登录屏幕.这些工作正常.
如果初始登录凭据不正确,则会显示警告,提示用户重试并且用户未登录(显然)并保留在登录屏幕上.
但是,如果用户登录,注销,然后输入不正确的凭据(按此顺序,没有关闭模拟器),则会出现问题.错误的凭据会显示提示警报; 点击"确定"关闭警报,用户没有登录,但是视图被锁定到注销屏幕(注销按钮是......这应该只有登录用户才能访问).不存在segue segue(编码或在故事板上),将用户从登录直接移动到注销屏幕.
没有任何操作可行,因为许多操作都需要用户ID,并且没有任何操作因为没有登录.我不知道为什么不正确的登录会以这种方式移动VC,因为不存在可以做到这一点的segue.有一个反向运动(退出时),但没有朝那个方向运动.
有人有什么想法吗?以下是相关的登录代码.
@IBAction func signInTapped(_ sender: UIButton) {
UIApplication.shared.beginIgnoringInteractionEvents()
PFUser.logInWithUsername(inBackground: userNameTextField.text!, password: passwordTextField.text!, block: { (user, error) in
if user != nil{
self.performSegue(withIdentifier: "signInSegue", sender: self)//if the sign in works
} else{
if let errorString = (error! as NSError).userInfo["error"] as? String{
let errorMessage = errorString
self.displayAlert("Failed login", message: errorMessage)//this is the code run when the login fails, yet it somehow can sometimes segue to the other viewcontroller
}
}
})
}
Run Code Online (Sandbox Code Playgroud)
以下是正在进行的分步示意图.
xcode
swift
parse-server
我刚刚创建了一个用于在 Cloud9 上学习的解析服务器部署,当我使用 PostMan 使用 REST API 访问它时,一切正常。我现在正在尝试云功能。
我的 cloud.js 文件中有以下代码,
Parse.Cloud.define('hello', function(request, response) {
var query = new Parse.Query("Test");
query.find({
success: function(data){
response.success(query);
},
error: function(err){
response.error(err);
}
})
});
Run Code Online (Sandbox Code Playgroud)
在响应中我收到以下错误,
{
"code": 141,
"error": {
"message": "unauthorized"
}
}
Run Code Online (Sandbox Code Playgroud)
我对 PostMan 的请求看起来像这样,
只要我不尝试查询并发送简单的响应(例如 ),响应就可以response.success("OK")。
这是 Parse 的问题还是我错过了与授权相关的内容?
最近,我们开始为我们的应用程序开发聊天功能,因为我们已经在使用 Parse SDK/Server,我们决定使用 Parse LiveQuery...
问题是,没有足够的文档说明如何在单独的服务器上部署 Parse LiveQuery 服务器!我们看到了这个:http : //docs.parseplatform.org/parse-server/guide/#scalability但我们并没有真正想出如何继续......
所以我们有几个问题:
为了创建可扩展的 Parse LiveQuery Server,我们需要做什么?(最好在 Digital Ocean / Heroku 上)
它如何与我们原始的 Parse Server 通信,我们的 MongoDB 存储在哪里?
使用Parse Server,我的项目经常出现问题.首先,我调用Parse Cloud函数来填充用户的数据列表:
var dataSet: Set<MyData>?
func loadData(withParameters parameters: [String : Any]) {
PFCloud.callFunction(inBackground: "loadData", withParameters: parameters) { (success, error) in
if let objects = success as? [[String : Any]] {
let dataTable: [MyData] = objects.map({ (object) -> MyData in
let myData = MyData(dataSource: PFObject(className: "MyData",
dictionary: object))
myData.dataSource?.objectId = object["objectId"] as? String
return myData
})
if self.dataSet == nil {
self.dataSet = []
}
self.dataSet = Set(dataTable)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面提到的代码中,我必须设置objectId因为没有这个,无论我从Parse获取多少个对象,当我将数组减少到具有最后一条指令的集合时,我最终只有一个对象.
但是,虽然这有效,但当我再次调用此函数来更新用户的数据时,我收到此错误myData.dataSource?.objectId = temp["objectId"] as? String …
我有一个解析服务器(由heroku 托管),我已将其配置为发送推送通知。它在仪表板上似乎设置正确,但是当我实际发送一个时,它只是说推送已“已保存”,但当我去检查其状态时,它发送失败。这是设置的index.js:
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it $
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse', // Don't$
liveQuery: {
classNames: ["Posts", "Comments"] // List of classes to support for query s$
},
push: JSON.parse(process.env.SERVER_PUSH || "{}"),
});
Run Code Online (Sandbox Code Playgroud)
PARSE_SERVER_PUSH(以及 appId、masterKey 和 serverURL)在 heroku 站点上的我的配置变量上进行配置,如下所示:
{ "ios":
{ "pfx": "/Users/path/to/folder/Prod\Cert.p12 ",
"passphrase": "******",
"bundleId": "com.parse.app",
"production": true
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的快速应用程序设置解析服务器的本地安装。这是我所做的:
npm install -g parse-server mongodb-runner
Run Code Online (Sandbox Code Playgroud)
然后:
mongodb-runner start
Run Code Online (Sandbox Code Playgroud)
这触发了这个错误:
Starting a MongoDB deployment to test against...{ HTTPError: Response code 403 (Forbidden)
at EventEmitter.ee.on.res (/usr/local/lib/node_modules/mongodb-runner/node_modules/got/index.js:250:24)
at EventEmitter.emit (events.js:182:13)
at Immediate.setImmediate (/usr/local/lib/node_modules/mongodb-runner/node_modules/got/index.js:99:8)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
name: 'HTTPError',
host: 'fastdl.mongodb.org',
hostname: 'fastdl.mongodb.org',
method: 'GET',
path: '/osx/mongodb-macos-x86_64-4.0.3.tgz',
protocol: 'https:',
url:
'https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.0.3.tgz',
statusCode: 403,
statusMessage: 'Forbidden',
headers:
{ 'content-type': 'application/xml',
'transfer-encoding': 'chunked',
connection: 'close',
date: 'Wed, 17 Oct 2018 18:38:43 GMT',
server: 'AmazonS3',
'x-cache': 'Error from cloudfront',
via: …Run Code Online (Sandbox Code Playgroud)