2012-11-06 36 views
4

我希望能夠使用CurrentApp.GetAppReceiptAsync()的結果中的AppReceiptId並將其綁定到後端服務中的用戶名,以驗證用戶是否實際購買了該應用。使用AppReceiptId在Windows應用商店應用中驗證用戶的身份?

我知道我應該使用CurrentAppSimulator來代替CurrentApp,但是CurrentAppSimulator.GetAppReceiptAsync()總是爲AppReceiptId返回一個不同的隨機值。這使得我的服務很難測試。

有沒有辦法讓它始終返回相同的值,而不僅僅是使用硬編碼的?我擔心,當我用CurrentApp替換CurrentAppSimulator並將其提交給商店時,它不會像我期望的那樣行事。在現實世界中,AppReceiptId不會改變,對吧?

代碼中,我用得到AppReceiptId:

var receiptString = await CurrentAppSimulator.GetAppReceiptAsync(); 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(receiptString); 

var ReceiptNode = (from s in doc.ChildNodes 
        where s.NodeName == "Receipt" 
        select s).Single(); 

var AppReceiptNode = (from s in ReceiptNode.ChildNodes 
         where s.NodeName == "AppReceipt" 
         select s).Single(); 

var idNode = (from s in AppReceiptNode.Attributes 
       where s.NodeName == "Id" 
       select s).Single(); 

string id = idNode.NodeValue.ToString(); 

ID總是會有一些隨機GUID。

回答

0

CurrentApp.GetAppReceiptAsync()。Id是實際購買的唯一ID。儘管它在技術上代表了由單個Windows ID進行的唯一購買,但它並不代表用戶本身,我認爲對該ID的持久性沒有任何保證。

您是否更適合使用Windows Live SDK來跟蹤跨設備的實際用戶身份?

無論如何,要回答你原來的問題,不,我不認爲有什麼辦法可以讓它始終返回相同的ID。該功能唯一合乎邏輯的位置是WindowsStoreProxy.xml文件,並且在模式中沒有看到允許您指定此信息的任何內容。

相關問題