Я застрял дольше, чем хотелось бы, с проблемой, связанной с проверкой электронной почты при создании учетной записи на Parse-Server (/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 следующим образом (исправление параметров почтового пистолета, которые необходимо исправить, чтобы они соответствовали вашей среде):
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: '[email protected]',
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 [email protected] 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
Я пробовал с несколькими браузерами, но результат идентичен.
Почему мы попадаем в эту ситуацию?