<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Difficulties to get Proc HTTP to return Access Token via REST API... in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Difficulties-to-get-Proc-HTTP-to-return-Access-Token-via-REST/m-p/625306#M184297</link>
    <description>&lt;DIV class="lia-message-heading lia-component-message-header"&gt;&lt;DIV class="lia-quilt-row lia-quilt-row-standard"&gt;&lt;DIV class="lia-quilt-column lia-quilt-column-20 lia-quilt-column-left"&gt;&lt;DIV class="lia-quilt-column-alley lia-quilt-column-alley-left"&gt;&lt;DIV class="lia-message-subject"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class="lia-message-dates lia-message-post-date lia-component-post-date-last-edited"&gt;Hi Guys.&lt;/P&gt;&lt;DIV class="lia-message-body lia-component-body"&gt;&lt;DIV class="lia-message-body-content"&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to connect with a proc http to&amp;nbsp;return Access Token via REST API...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With Potstman, i get the acess token without problem :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Method : POST&lt;/P&gt;&lt;P&gt;URL : "&lt;SPAN&gt;https://services-xxxxxxxxxxxxxx/token"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Passing information in the body :&amp;nbsp;&lt;/P&gt;&lt;P&gt;client_id=XXXX;&lt;/P&gt;&lt;P&gt;client_secret = XXXX;&lt;/P&gt;&lt;P&gt;Grant_type =&amp;nbsp;&lt;SPAN&gt;client_credentials&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Headers :&amp;nbsp;Content-Type =&amp;nbsp;application/x-www-form-urlencoded&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Authorisation : Type = OAUTH 2.0 Request Header.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In SAS, i met some difficulties. I tried to use the code mentioned above.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Unfornutally, i have a bad request with a invalid_client resp.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;filename resptkn temp;&lt;BR /&gt;filename headers temp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;proc http&lt;BR /&gt;method="POST"&lt;BR /&gt;url="https://services-xxxxxxxxxxxxxx/token"&lt;BR /&gt;ct="application/x-www-form-urlencoded"&lt;BR /&gt;in='client_id=XXXX&amp;amp;client_secret=XXXX&amp;amp;grant_type=client_credentials'&lt;BR /&gt;headerout=headers&lt;BR /&gt;out=resptkn&lt;BR /&gt;HEADEROUT_OVERWRITE&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;{"error":"invalid_client"}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I used this proc to connect SAS with GA api or salesforce and i didnt' met issu..&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Do you have an idea ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks in advance for your help.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Mon, 17 Feb 2020 15:36:56 GMT</pubDate>
    <dc:creator>Jejeremy87</dc:creator>
    <dc:date>2020-02-17T15:36:56Z</dc:date>
    <item>
      <title>Difficulties to get Proc HTTP to return Access Token via REST API...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Difficulties-to-get-Proc-HTTP-to-return-Access-Token-via-REST/m-p/625306#M184297</link>
      <description>&lt;DIV class="lia-message-heading lia-component-message-header"&gt;&lt;DIV class="lia-quilt-row lia-quilt-row-standard"&gt;&lt;DIV class="lia-quilt-column lia-quilt-column-20 lia-quilt-column-left"&gt;&lt;DIV class="lia-quilt-column-alley lia-quilt-column-alley-left"&gt;&lt;DIV class="lia-message-subject"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class="lia-message-dates lia-message-post-date lia-component-post-date-last-edited"&gt;Hi Guys.&lt;/P&gt;&lt;DIV class="lia-message-body lia-component-body"&gt;&lt;DIV class="lia-message-body-content"&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to connect with a proc http to&amp;nbsp;return Access Token via REST API...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With Potstman, i get the acess token without problem :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Method : POST&lt;/P&gt;&lt;P&gt;URL : "&lt;SPAN&gt;https://services-xxxxxxxxxxxxxx/token"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Passing information in the body :&amp;nbsp;&lt;/P&gt;&lt;P&gt;client_id=XXXX;&lt;/P&gt;&lt;P&gt;client_secret = XXXX;&lt;/P&gt;&lt;P&gt;Grant_type =&amp;nbsp;&lt;SPAN&gt;client_credentials&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Headers :&amp;nbsp;Content-Type =&amp;nbsp;application/x-www-form-urlencoded&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Authorisation : Type = OAUTH 2.0 Request Header.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In SAS, i met some difficulties. I tried to use the code mentioned above.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Unfornutally, i have a bad request with a invalid_client resp.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;filename resptkn temp;&lt;BR /&gt;filename headers temp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;proc http&lt;BR /&gt;method="POST"&lt;BR /&gt;url="https://services-xxxxxxxxxxxxxx/token"&lt;BR /&gt;ct="application/x-www-form-urlencoded"&lt;BR /&gt;in='client_id=XXXX&amp;amp;client_secret=XXXX&amp;amp;grant_type=client_credentials'&lt;BR /&gt;headerout=headers&lt;BR /&gt;out=resptkn&lt;BR /&gt;HEADEROUT_OVERWRITE&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;{"error":"invalid_client"}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I used this proc to connect SAS with GA api or salesforce and i didnt' met issu..&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Do you have an idea ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks in advance for your help.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 17 Feb 2020 15:36:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Difficulties-to-get-Proc-HTTP-to-return-Access-Token-via-REST/m-p/625306#M184297</guid>
      <dc:creator>Jejeremy87</dc:creator>
      <dc:date>2020-02-17T15:36:56Z</dc:date>
    </item>
    <item>
      <title>Re: Difficulties to get Proc HTTP to return Access Token via REST API...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Difficulties-to-get-Proc-HTTP-to-return-Access-Token-via-REST/m-p/640267#M190660</link>
      <description>&lt;P&gt;You would have to check with the service host to understand what the response&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt; {"error":"invalid_client"}&lt;/PRE&gt;
&lt;P&gt;actually means.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;One guess is the client in the message is related to the agent of the client application instead of an invalid client_id parameter.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you examine the default headers sent by PROC HTTP you will find the user agent is&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;HTTP_USER_AGENT = SAS/9&lt;/PRE&gt;
&lt;P&gt;Compare to a standard web browser that might represent itself as follows&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;HTTP_USER_AGENT = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36 Edg/81.0.416.53&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try sending a different User-Agent in your PROC HTTP step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;* create text file that contains one line per request header in the format key:value;&lt;BR /&gt;filename hdrs_in temp;
data _null_;
  file hdrs_in;
  input;
  put _infile_;
datalines4;
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36 Edg/81.0.416.53
;;;;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;proc http&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  method="POST"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  url="https://services-xxxxxxxxxxxxxx/token"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  ct="application/x-www-form-urlencoded"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  in='client_id=XXXX&amp;amp;client_secret=XXXX&amp;amp;grant_type=client_credentials'&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;  HEADERIN=HDRS_IN  /* force a different User-Agent */&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;  headerout=headers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  out=resptkn&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  HEADEROUT_OVERWRITE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Tip: I used a simple PHP script on my web host to show me the inbound headers and parameters:&lt;/P&gt;
&lt;PRE&gt;&amp;lt;?php
   header('Content-type: text/plain');

   echo "HEADERS:\n";
   ksort($_SERVER);
   foreach($_SERVER as $key=&amp;gt;$value) if (substr($key,0,4)=="HTTP") { echo $key, ' = ', $value, "\n"; }

   echo "\n_GET:\n";
   ksort($_GET);
   foreach($_GET as $key=&amp;gt;$value) { echo $key, ' = ', $value, "\n"; }

   echo "\n_POST:\n";
   ksort($_POST);
   foreach($_POST as $key=&amp;gt;$value) { echo $key, ' =&amp;gt; ', $value, "\n"; }
?&amp;gt;
&lt;/PRE&gt;</description>
      <pubDate>Thu, 16 Apr 2020 04:13:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Difficulties-to-get-Proc-HTTP-to-return-Access-Token-via-REST/m-p/640267#M190660</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-04-16T04:13:56Z</dc:date>
    </item>
  </channel>
</rss>

