解析服务器,电子邮件验证错误?

时间:2018-03-20 09:41:51

标签: node.js heroku parse-server email-verification heroku-cli

在Parse-Server(/ Heroku)上创建帐户时,我遇到了与电子邮件验证相关的问题。虽然我在这个问题上发了几篇文章,但我还是不够幸运(或者可能没有足够清楚地表达出来)以获得重要的帮助。所以我决定重新做一遍,这次给出一个精确的一步一步的方法来重现这个bug,对于任何有兴趣仔细观察的人来说。如果我从头到尾做的都是正确的,那么肯定会有一个错误。如果另一方面我做错了(这很可能就是这种情况),我希望有人可以指出错误。

以下是该过程,首先在终端上使用以下命令在heroku上创建应用程序:

git clone https://github.com/parse-community/parse-server-example.git
mv parse-server-example linkbugapp808
cd linkbugapp808/
npm install @parse/simple-mailgun-adapter  --save
heroku create linkbugapp808

heroku addons:create mongolab:sandbox
heroku config:set APP_ID=ABCDEF-12345678:xytzt_SSTTJJZ
heroku config:set MASTER_KEY=MMMMM-87878787:wwyyssaa_PPGHYU
heroku config:set SERVER_URL=https://linkbugapp808.herokuapp.com/
heroku config:set PARSE_PUBLIC_SERVER_URL=https://linkbugapp808.herokuapp.com

当然,如果我使用的名称" linkbugapp808"被采取或你不喜欢它你可以选择另一个。

将index.js文件设置为此(修复需要修复的mailgun参数,以适应您的环境):

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;

var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;

if (!databaseUri) {
  console.log('DATABASE_URI not specified, falling back to localhost.');
}

var api = new ParseServer({
  databaseURI: databaseUri,
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID,
  masterKey: process.env.MASTER_KEY,
  serverURL: process.env.SERVER_URL,
  publicServerURL: process.env.PARSE_PUBLIC_SERVER_URL,
  appName: 'LinkBugApp',
  verifyUserEmails: true,
  emailAdapter: {
    module: '@parse/simple-mailgun-adapter',
    options: {
      fromAddress: 'from@somemail.com',
      domain: 'some.domain',
      apiKey: 'key-apiKey-mailgun-apiKey'
    }
  }
});

var app = express();

// Serve static assets from the /public folder
app.use('/public', express.static(path.join(__dirname, '/public')));
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

// Serve the Parse API on the /parse URL prefix
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);

// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
  res.status(200).send('I dream of being a website.  Please star the parse-server repo on GitHub!');
});

// There will be a test page available on the /test path of your server url
// Remove this before launching your app
app.get('/test', function(req, res) {
  res.sendFile(path.join(__dirname, '/public/test.html'));
});

var port = process.env.PORT || 1337;
var httpServer = require('http').createServer(app);
httpServer.listen(port, function() {
    console.log('parse-server-example running on port ' + port + '.');
});

// This will enable the Live Query real-time server
ParseServer.createLiveQueryServer(httpServer);

接下来在终端中运行以下命令(在linkbugapp808根文件夹内):

git add . && git commit -m "update linkbugapp808" && git push heroku master

此时,应用程序在Heroku上创建并准备就绪。

然后从iOS应用程序在我们刚刚设置的Parse-Server上创建一个帐户。

一切似乎都没事。

为其创建帐户的用户将收到与此类似的邮件:

Hi,

You are being asked to confirm the e-mail address usermail@xmail.com with LinkBugApp

Click here to confirm it:
https://linkbugapp808.herokuapp.com/apps/ABCDEF-12345678:xytzt_SSTTJJZ/verify_email?token=SiYyk9NgVkcwhXXWlEdEUTjyz&username=ausrnamex

当点击邮件内的确认链接时,这是人们可以看到的(不完全是注册确认链接的预期):

Cannot GET /apps/ABCDEF-12345678:xytzt_SSTTJJZ/verify_email?token=SiYyk9NgVkcwhXXWlEdEUTjyz&username=ausrnamex 

我尝试过使用多种浏览器,但效果相同。

为什么我们会陷入这种情况?

0 个答案:

没有答案