2016-06-23 39 views
0

Ich verwende das Embedded APP SDK (zum Erstellen der Shopify App), mit dem ich eine Webseite im Admin Panel anzeigen kann. Nehmen wir an, die Shopify App hat eine URL von/shopifyApp. Wenn ein Nutzer auf die genannte App klickt, wird er zu "/ shopifyApp" weitergeleitet. Die get-Anfrage sieht aus wie /shopifyApp? Hmac = b20934d6b66cxxx & protocol = https% 3A% 2F% 2F & shop = dev-store-61.myshopify.com & timestamp = 1466715935Ermitteln, ob eine Anfrage vom Shopify Admin Panel kommt

ich das, um zu überprüfen, wenn ich versuche, hmac ist gültig. Ich verwende den folgenden Code zur Validierung, aber leider funktioniert es nicht.

var map = JSON.parse(JSON.stringify(req.query)); 
    delete map['hmac']; 
    var message = querystring.stringify(map); 
    var generated_hash = require('crypto').createHmac('sha256', "myAppSecret").update(message).digest('hex'); 
    if (generated_hash === req.query.hmac) { 
     //show Authenticated page 
    } else { 
     //Show unauthenticated page 
    } 

Die generierte hat ist nie gleich hmac aus irgendeinem Grund. Kann mir jemand raten, was ich falsch mache?

Antwort

0

Sie benötigen die hmac und Unterschrift

function verifyRequest(req, res, next) { 
var map = JSON.parse(JSON.stringify(req.query)); 
delete map['signature']; 
delete map['hmac']; 

var message = querystring.stringify(map); 
var generated_hash = crypto.createHmac('sha256', config.oauth.client_secret).update(message).digest('hex'); 
if (generated_hash === req.query.hmac) { 
    next(); 
} else { 
    return res.json(400); 
} 

}

+0

Ich erhalte keine Signatur löschen – Abhik