Nodejs — служба проверки токена лицензии на приложение Office не проверяет токен

Я разрабатываю офисные приложения с использованием NodeJS. В рамках этого я должен реализовать проверку лицензии, которая будет проверять токен, отправленный вместе с URL-адресом приложения из офисного магазина.

Я сослался на ссылку http://msdn.microsoft.com/en-us/library/office/jj163908(v=office.15).aspx#bk_implement

Вот мой код:

  var licence_code = req.param('et'); // this is equivalent to decodeURIComponent('token present in the url');

  // Applies base64 decoding of the token to get a decoded token
  var decode_base64 = new Buffer(license_code,'base64'); 
  var code = decode_base64.toString();

  // Using nodejs request module to make rest call to office verification service

  request(
    { method: 'GET'
    ,     uri:'https://verificationservice.officeapps.live.com/ova/verificationagent.svc/rest/verify?token=' + code
    }
  , function (error, response, body) {
       console.log(body);
    }
  );

Я всегда получаю один и тот же неверный ответ от службы проверки Office, как показано ниже:

<VerifyEntitlementTokenResponse xmlns="http://schemas.datacontract.org/2004/07/Microsoft.OfficeMarketplace.ServicePlatform.VerificationAgent.Service.Contract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AssetId i:nil="true"/>
<DeploymentId i:nil="true"/>
<EntitlementAcquisitionDate>0001-01-01T00:00:00</EntitlementAcquisitionDate>
<EntitlementExpiryDate i:nil="true"/>
<EntitlementType i:nil="true"/>
<IsEntitlementExpired>false</IsEntitlementExpired>
<IsExpired>false</IsExpired>
<IsSiteLicense>false</IsSiteLicense>
<IsTest>false</IsTest>
<IsValid>false</IsValid>
<ProductId i:nil="true"/>
<Seats>0</Seats>
<SignInDate>0001-01-01T00:00:00</SignInDate>
<SubscriptionState i:nil="true"/>
<TokenExpiryDate>0001-01-01T00:00:00</TokenExpiryDate>
<UserId i:nil="true"/>
</VerifyEntitlementTokenResponse>

Пожалуйста, проверьте, правильно ли я использую декодирование токена, или проблема в этом. Помогите мне решить эту проблему.

Спасибо Рам


person user2749751    schedule 06.04.2014    source источник
comment
В документе, на который вы ссылаетесь, говорится, что et будет как в кодировке URL, так и в кодировке Base64. Похоже, ваш код декодирует только на Base64. Посмотрите, поможет ли добавление code = unescape(code); для обработки результата Base64.   -  person barry-johnson    schedule 06.04.2014
comment
По умолчанию req.param('et') дает мне декодированное значение URL. поэтому я не использовал какой-либо метод decodeURIComponent/unescape для «et».   -  person user2749751    schedule 07.04.2014
comment
Да... но... моя точка зрения заключалась в том, что документ говорит, что он закодирован в URL-адресе, а затем в кодировке Base64. Операции должны быть применены в обратном порядке. Пожалуйста, просто посмотрите на код примера C# на странице, на которую вы ссылаетесь. Все, что делает декодирование по умолчанию, — это декодирование исходного URI в значение Base64 — это значение Base 64 при декодировании по-прежнему будет закодировано в URL.   -  person barry-johnson    schedule 07.04.2014
comment
немного запутался!. Документ упоминает как Параметр строки запроса — et — указывает версию маркера лицензии приложения в кодировке Base64 и URL-адресе. Таким образом, Microsoft выполняет сначала кодировку base64 для токена, а затем кодировку URI. Я думаю, чтобы получить токен... нам нужно сначала декодировать base64, а затем декодировать URI, чтобы получить токен Orinial, переданный службе проверки... К сожалению, это не работает для меня...   -  person user2749751    schedule 08.04.2014
comment
После декодирования base64 я получил XML ‹?xml version=1.0 encoding=UTF-8?› ‹r v=1› ‹t помощь=WW pid=YYY cid=ZZZ ts=0 sl=true et=Free ad=2013- 12-18T08:58:33Z sd=2014-04-04 te=2015-04-04T07:20:43Z ss=0 /› ‹d›XXXXX‹/d› ‹/r› ,,,,, Но я перепутал, что отправлять именно как токен в приведенной ниже службе проверки..verificationservice.officeapps.live.com/ova/ {токен}   -  person user2749751    schedule 08.04.2014