我已經構建了我的第一個Node.js
應用程序,該應用程序應該安裝在Shopify
商店中。如果你想看看我的實際代碼是什麼樣的(app.js),你可以查看它here。這是非常基本的,所以閱讀並不難。Node.js - 如何使用訪問/授權令牌?
我知道如何驗證安裝應用程序的(繼Shopify說明),但我沒怎麼使用永久access token
,一個成功的安裝爲我提供了所有後續請求驗證。
通過後續請求,我指的是呈現應用或請求安裝應用的請求,即使應用已安裝。
現在,我存儲店鋪的名字(這是唯一的)與永久性令牌Shopify將在我數據庫一起。但我不知道這是否是必要的。如果我沒有錯,只需使用瀏覽器的會話就可以做到嗎?但我該怎麼做?我怎麼在每次請求到來時使用這個令牌來檢查它是否有效?
謝謝任何幫助/建議!
下面的代碼是那種什麼my actual code樣子,以便給你的我的問題是什麼的想法表示:
db.once('open', function(callback)
{
app.get('/', function (req, res)
{
var name = getNameFrom(req);
if (existsInDB(name) && tokenExistsInDBfor(name))
{
res.redirect('/render');
/*
Is checking that the shop (along with a permanent token)
exists in my DB enough ?
Shouldn't I check whether the current request comes with
a token that is equal to the one in my DB ?
What if the token received with this request is different
from the one stored in my DB ?
*/
}
else res.redirect('/auth');
});
app.get('/auth', function (req, res)
{
if (authenticated(req))
{
var token = getPermanentToken();
storeItInDB(nameFrom(req), token);
res.redirect('/render');
/*
aren't I supposed to do anything more
with the token I've received ? send it
back/store it in the browser session as well maybe?
is storing it in the db necessary ?
*/
}
});
app.get('/render', function (req, res)
{
/*
How do I check that this request is coming
from an authorised shop that has the necessary token ?
Simply checking my DB will not do
because there might be some inconsistency correct ?
*/
res.sendFile(*file that will build app on the client*);
});
});
感謝您的回覆奇拉格調用Shopify API。儘管如此,我並不真正理解'access token'和'auth token'之間的區別。我在Shopify上得到的所有東西都是一個「臨時標記」,然後我換成了「永久標記」,這是我在DB中保存的一個商標名稱。所以我不知道如何獲得你所指的'auth token'。我也不知道如何將'token'返回給客戶端,就像你所建議的一樣,我不知道如何在客戶端發出的每個請求中都存在'check token'。我在OP中包含了一個到我的實際代碼的鏈接,以防有所幫助。 –
如果在客戶端和服務器之間移動'永久令牌'不是好的做法,那我該怎麼做呢?我如何生成你正在談論的'auth token',我該怎麼處理呢? –
編輯我的答案詳細的工作流程 –