Wednesday, 7 June 2017

Node.js backend for AMP auth

I am making AMP page with Node.js backend, so i don't understand, how works amp-access.

This is my code on the page

...
<script id="amp-access" type="application/json">
    {
        "authorization": "/auth?rid=READER_ID&url=CANONICAL_URL",
        "noPingback": true,
        "login": "/login?rid=READER_ID&url=CANONICAL_URL",
        "authorizationFallbackResponse": {
            "error": true,
            "access": false
        }
    }
</script>
...
<div id="subscription" amp-access="NOT access" amp-access-hide>
    <h3>Subscribe</h3>
    <button on="tap:amp-access.login">Click</button>
</div>
<div amp-access="access">
    <p>Subscription is active</p>
</div>
...

This is login page

...
<form method="POST" action="/subscribe">
    <input type="email" name="email" placeholder="Your email" required>
    <input type="submit" value="Submit">
    <input name="returnurl" type="hidden" value="https://cdn.ampproject.org/v0/amp-login-done-0.1.html?url=https://my.website#subscription">
</form>
...

And this is Node.js route

app.post('/subscribe', (req, res) => {
    let body = _.pick(req.body, ['email']);
    let user = new User(body);

    user.save().then(() => {
        res.send({"success": true});
    }, () => {
        res.status(400).send({"success": false});
    });
});

I also tried redirect

app.post('/subscribe', (req, res) => {
    let body = _.pick(req.body, ['email', 'returnurl']);
    let user = new User(body);

    user.save().then(() => {
        res.redirect(body.returnurl);
    }, () => {
        res.redirect(body.returnurl);
    });
});

But in result i see only "Waiting for my.website/subscription"

Thank you for answers!



via Inferion

No comments:

Post a Comment