0 votes
1 view
in Salesforce by (11.9k points)

NOTE: I've never written vb.net code before this. I've googled for a solution but did not find anything that worked.

I'm trying to get access token from Salesforce. Below code worked just yesterday. And I have no idea why it is not working today. I've tried adding content-type as application/x-www-form-urlencoded but it did not work either. When I use curl I'm able to get access token. Also I'm able to get access token using advanced rest client in google chrome. Any ideas why it is returning 400 Bad Request unknown error retry your request?

 Imports System.Collections.Specialized

Imports System.Net

Imports System.Text

Module Module1

Sub Main()

    Dim clientId As String = "clientId"

    Dim clientSecret As String = "clientSecret"

    Dim redirectUri As String = "https://test.salesforce.com"

    Dim environment As String = "https://test.salesforce.com"

    Dim tokenUrl As String = ""

    Dim username As String = "[email protected]"

    Dim password As String = "passwordtoken"

    Dim accessToken As String = ""

    Dim instanceUrl As String = ""

    Console.WriteLine("Getting a token")

    tokenUrl = environment + "/services/oauth2/token"

    Dim request As WebRequest = WebRequest.Create(tokenUrl)

    Dim values As NameValueCollection = New NameValueCollection()

    values.Add("grant_type", "password")

    values.Add("client_id", clientId)

    values.Add("client_secret", clientSecret)

    values.Add("redirect_uri", redirectUri)

    values.Add("username", username)

    values.Add("password", password)

    request.Method = "POST"

    Try

        Dim client = New WebClient()

        Dim responseBytes As Byte() = client.UploadValues(tokenUrl, "POST", values)

        Dim response As String = Encoding.UTF8.GetString(responseBytes)

        Console.WriteLine(response)

        Console.ReadKey()

    Catch ex As Exception

        Console.WriteLine(ex.Message)

        Console.WriteLine("Press any key to close")

        Console.ReadKey()

    End Try

End Sub

End Module

1 Answer

0 votes
by (30.1k points)

So, actually, the problem is about the TLS version which was mismatching. All the Salesforce sandboxes refuse TLS 1.0 connections. 

All you need to do is to add a line of code on top of the code block. Here is the code for returning the same:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...