Как получить обновленный токен OAuth2 в PayPal с помощью .NET SDK - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу сгенерировать токен обновления для PayPal и использовать этот токен обновления для генерации новых токенов доступа. Однако ничего, что я реализовал, пока не работает, и документация PayPal не так уж и хороша.



ПЕРВЫЙ МЕТОД, КОТОРЫЙ Я ПРОБОВАЛ:

Я использую код из Пример входа в систему PayPal OAuth не работает должным образом и изменил его на VB.NET, как показано ниже, но я получаю ошибку 400 Bad Request

    Dim oAuthUrl = "https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice"
    Dim authHeader = String.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthClientId) & ":" + Uri.EscapeDataString((oAuthClientSecret)))))
    Dim postBody = String.Format("grant_type=authorization_code&code={0}", code)
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
    Dim authRequest = CType(WebRequest.Create(oAuthUrl), HttpWebRequest)
    authRequest.Headers.Add("Authorization", authHeader)
    authRequest.Method = "POST"
    Dim postcontentsArray As Byte() = Encoding.UTF8.GetBytes(postBody)
    authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"
    authRequest.ContentLength = postcontentsArray.Length

    Try

        Using stream As Stream = authRequest.GetRequestStream()
            stream.Write(postcontentsArray, 0, postcontentsArray.Length)
            stream.Close()
            Dim response As WebResponse = authRequest.GetResponse()

            Using responseStream As Stream = response.GetResponseStream()

                If responseStream IsNot Nothing Then

                    Using reader = New StreamReader(responseStream)
                        Dim responseFromServer As String = reader.ReadToEnd()
                        reader.Close()
                        responseStream.Close()
                        response.Close()
                        Dim responseResult = JsonConvert.DeserializeObject(responseFromServer)
                    End Using
                End If
            End Using
        End Using

    Catch e As Exception
    End Try




ВТОРОЙ МЕТОД, КОТОРЫЙ Я ПРОБОВАЛ:

Я также пытался использовать CreateFromAuthorizationCodeParameters через PayPal .NET SDK, но я получаю ответ, что идентификатор клиента или секретный ключ являются нулевыми:

    Dim config As Dictionary(Of String, String) = generateConfig()
    Dim accessToken = New PayPal.OAuthTokenCredential(sClientID, sClientSecret, config).GetAccessToken()
    Dim apiContext = New PayPal.APIContext(accessToken)
    apiContext.Config = config


    Dim createFromAuthorizationCodeParameters1 As CreateFromAuthorizationCodeParameters = New CreateFromAuthorizationCodeParameters()
    createFromAuthorizationCodeParameters1.SetCode(sAuthCode)
    createFromAuthorizationCodeParameters1.setClientId(sClientID)
    createFromAuthorizationCodeParameters1.setClientSecret(sClientSecret)
    Dim Tokeninfo As Tokeninfo = Tokeninfo.CreateFromAuthorizationCode(apiContext, createFromAuthorizationCodeParameters1)
    Dim createFromRefreshTokenParameters As CreateFromRefreshTokenParameters = New CreateFromRefreshTokenParameters()
    Dim refreshedTokenInfo As Tokeninfo = Tokeninfo.CreateFromRefreshToken(createFromRefreshTokenParameters)

Где словарь "config" выглядит следующим образом:

    Dim config As New Dictionary(Of String, String)()
    config.Add("mode", "live")
    config.Add("connectionTimeout", "30000")
    config.Add("requestRetries", "5")
    config.Add("IPAddress", "127.0.0.1")
    config.Add("account1.apiUsername", sUserName)
    config.Add("account1.apiPassword", sPassword)
    config.Add("account1.apiSignature", sSignature)
    config.Add("account1.applicationId", sAppID)
    config.Add("clientId", sClientID)
    config.Add("clientSecret", sClientSecret)
    config.Add("account1.signatureSubject", "")
    config.Add("account1.certificateSubject", "")

Ни один из этих методов не работает при создании токена обновления. Любая помощь будет принята с благодарностью. Спасибо

...