Аутентификация Walmart OAuth (Token API) на VBA - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь пройти аутентификацию на walmart.com, используя аутентификацию на основе токенов (новый предпочтительный метод) на vba. Вы можете прочитать больше здесь: https://developer.walmart.com/#/apicenter/marketPlace/latest#introduction

В чем может быть причина сообщения об ошибке? Как исправить эту ошибку? В конце концов, идентификатор потребителя в коде не требуется.

Base64EncodeString - это моя личная функция. Я проверил, как это работает, сравнив результат с веб-ресурсами.

WalmartAPIUserKey - мой ClientID

WalmartSecretKey - мой ClientSecret

Dim xmlhttp As New MSXML2.XMLHTTP60    
Dim encodeData As String

encodeData = Base64EncodeString(WalmartAPIUserKey & ":" & WalmartSecretKey) 
xmlhttp.Open "POST", "https://marketplace.walmartapis.com/v3/token", False                       
xmlhttp.SetRequestHeader "WM_SVC.NAME", "Walmart marketplace"
xmlhttp.SetRequestHeader "WM_QOS.CORRELATION_ID", "123456abcdef"
xmlhttp.SetRequestHeader "Authorization", "Basic " & encodeData
xmlhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.SetRequestHeader "Accept", "application/xml"
xmlhttp.send

MsgBox (xmlhttp.responseText)
Debug.Print (xmlhttp.responseText)

Set xmlhttp = Nothing

Однако я получаю следующую ошибку:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:errors xmlns:ns2="http://walmart.com/">
    <ns2:error>
        <ns2:code>SYSTEM_ERROR.GMP_GATEWAY_API</ns2:code>
        <ns2:description>consumer id not found in PRS</ns2:description>
        <ns2:info>System encountered some internal error.</ns2:info>
        <ns2:severity>ERROR</ns2:severity>
        <ns2:category>DATA</ns2:category>
        <ns2:causes/>
        <ns2:errorIdentifiers/>
    </ns2:error>
</ns2:errors>

1 Ответ

1 голос
/ 28 марта 2019

Может быть, примечание, но должен быть тип гранта, отправленный по внешнему виду, т.е. тело в строке отправки должно быть

grant_type=client_credentials 

Информация:

Request Parameters
Name        Description                             Required      Default        
grant_type  The type of access token to be issued   Yes     client_credentials        

** Note:The value of the grant_type should always be 'client_credentials' to get the correct access token **
...