Как получить ключ Microsoft Store ID?

Я пытаюсь узнать, как получить ключ Microsoft Store ID. Для этого я последовал примерам, предоставленным Microsoft в Windows Universal Samples. Я попытался использовать сценарий "Бизнес-бизнес" (сценарий 7). Я уже опубликовал образец приложения и зарегистрировал приложение в Azure Active Directory. Проблема в том, что я не знаю, какое значение следует отправлять в качестве параметра publisherUserId в функциях getCustomerCollectionsIdAsync/getCustomerPurchaseIdAsync. Я попытался отправить электронное письмо текущего пользователя (адрес электронной почты клиента), который извлекает только пустой результат (ключ Microsoft Store ID).

 function getCustomerCollectionsId() {
    var token = getTokenFromAzureOAuthAsync().done(function (aadToken) {
        if (aadToken) {
            storeContext.getCustomerCollectionsIdAsync(aadToken, "***@hotmail.com")//"[email protected]"
                .done(function (result) {
                    output.innerText = result;
                    if (!result) {
                        WinJS.log && WinJS.log("getCustomerCollectionsIdAsync failed.", "sample", "error");
                    }
                });
        }
    });
}

function getCustomerPurchaseId() {
    var token = getTokenFromAzureOAuthAsync().done(function (aadToken) {
        if (aadToken) {
            storeContext.getCustomerPurchaseIdAsync(aadToken, "***@hotmail.com")//"[email protected]"
                .done(function (result) {
                    output.innerText = result;
                    if (!result) {
                        WinJS.log && WinJS.log("getCustomerPurchaseIdAsync failed.", "sample", "error");
                    }
                });
        }
    });
}

Ответ 1

using Windows.Security.Authentication.Web;
...
string SID = WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString();

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

http://microsoft.github.io/winsdkfb/index.html

Ответ 2

У меня такая же проблема, вот решение работает для меня.

Перейдите на https://portal.azure.com, выберите "Azure Active Directory", выберите "Регистрация приложений", выберите свое приложение на правой панели. затем выберите Манифест, чтобы изменить его манифест. установите следующие поля в значение:

"accessTokenAcceptedVersion": 1,
"identifierUris": [
    "https://onestore.microsoft.com",
    "https://onestore.microsoft.com/b2b/keys/create/collections",
    "https://onestore.microsoft.com/b2b/keys/create/purchase"
    ],
"signInAudience": "AzureADMyOrg",

И поле ресурса вашего запроса на получение токена (https://login.microsoftonline.com/xxx/oauth2/token) должно быть точной строкой " https://onestore.microsoft.com/b2b/keys/create/collections " (обратите внимание, что доменной частью является "onestore.microsoft.com")

PS: Мой способ узнать это решение:

  • используйте ssl прокси charles для записи запроса моего С# проекта с помощью storeContext.getCustomerCollectionsIdAsync api. узнайте, что URL-адрес, который он отправляет, является " https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys ", и тело запроса содержит маркер, который я ему отправляю.
  • используйте прокси-сервер charles ssl для записи запроса другого приложения, которое работает правильно, например, "Hotspot Shield", попробуйте купить что-нибудь из него и отмените его. Найдите запрос URL и загрузите тело запроса и базовый URL base64 для декодирования второй части их токена, найдите, что "aud" это " https://onestore.microsoft.com/b2b/keys/create/collections " и "вер" равен "1,0".
  • Измените конфигурацию "Регистрация приложений" и код получения токена, чтобы сделать токен версии 1.0 и "aud" на правильный.

Я думаю, что "Azure Active Directory" является обновлением до версии 2, но документ "Ключ идентификатора Microsoft Store" не обновляется до этой версии...