Почему я получаю код 402 для запроса при реализации покупки цифровых товаров для действий в Google? - PullRequest
0 голосов
/ 15 мая 2019

Приложение My Assistant получает статус PEMISSION_DENIED с сообщением о том, что

у вызывающего абонента нет разрешения

Я выполнил все инструкции, приведенные здесьчеловек: Внедрение цифровых товаров

Я создал APK, управлял элементами SKU (действительный статус), приложение для Android, которое было опубликовано (действительный статус), включено Actions API из Google API Console и сделал service account key для моего проекта, и выпустил мое приложение Assistant для beta, чтобы протестировать его.Статус Connect App равен connected, и переключатель включен.Я думаю, что все необходимое выполнено, но сообщение об ошибке не исправлено, что означает, что я не могу получить покупные предметы, которые я приготовил в своем Google Developer Console.

const createJwtClient = () => {
    const scopes = [
        "https://www.googleapis.com/auth/actions.purchases.digital"
    ];   
    return new google.auth.JWT(
        serviceAccount.client_email,
        null,
        serviceAccount.private_key,
        scopes,
        null
    );
};

const packageName = 'com.myproject.name'

const getSkus = (tokens, conv) => {
    return new Promise((resolve, reject) => {
        const url = `https://actions.googleapis.com/v3/packages/${packageName}/skus:batchGet`;
        const convId = conv.request.conversation.conversationId;
        const param = {
            conversationId: convId,
            skuType: "SKU_TYPE_IN_APP",
            ids: [
                "item-id1",
                "item-id2"
            ]
        };
        request.post(url, {
            auth: {
                bearer: tokens.access_token
            },
            json: true,
            body: param
        }, (err, httpResponse, body) => {
            if (err) {
                reject(err);
            } else {
                const statusCode = httpResponse.statusCode;
                const statusMessage = httpResponse.statusMessage;
                console.log(`${statusCode}: ${statusMessage}`);
                console.log(JSON.stringify(body));
                resolve(body);
            }
        });
    });
};

Я ожидаю, что я получу покупаемые предметы в формате JSON, но мой запрос на получение SKU, похоже, не выполнен.

Но я получаю access_token от JWT запроса, используя мой service account key.

Не могли бы вы указать, что что-то не так ??

1 Ответ

0 голосов
/ 08 июня 2019

Во-первых, убедитесь, что ваш тестовый адрес электронной почты отличается от адреса администратора Play Console.Во-вторых, убедитесь, что вы добавили управляемые продукты и подписки в консоль Google Play (см. Ниже) enter image description here enter image description here Действия в Google Пример Github недавно был также обновлен, и Kotlin APK имеет все особенности в разделе «Начало работы» в файле readme.

...