2016-06-23 42 views
0

中我使用的是嵌入式APP SDK(建築Shopify應用程序),允許我以顯示管理面板中的網頁。可以說Shopify應用程序具有/ shopifyApp的網址。無論何時用戶點擊該應用,他都會被重定向到「/ shopifyApp」。 GET請求看起來像 /shopifyApp?HMAC = b20934d6b66cxxx &協議= HTTPS%3A%2F%2F &店= dev-store-61.myshopify.com &時間戳= 1466715935檢測是否請求來自Shopify管理面板

我試圖驗證是否hmac是有效的。我正在使用下面的一段代碼來驗證,但不幸的是它不工作。

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 
    } 

出於某種原因,生成的has永遠不會等於hmac。有人能告訴我我做錯了什麼嗎?

回答

0

您需要刪除HMAC和簽名

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

我無法接收簽名 – Abhik

相關問題