Jump to content
fmgenius

CURL Authentication Failure

Recommended Posts

fmgenius    0

I am trying to do a basic Insert from URL call with some CURL headers added and I keep getting authentication errors. This is the curl command sent by the provider for me to use. 

 

curl -X GET --header 'Accept: application/json' --header 'api_key: 1234567890abcdefg' 'https://mydomain.leaddocket.com/api/endpoint'

This is the curl I am setting up

-X GET \ 
  --header 'Accept: application/json' \ 
  --header 'api_key: 1234567890abcdefg' \ 
  -trace $$curlTraceDump

FM barks and says "Authentication Failed" but if I do this with the BaseElements plugin, it works just fine. 

What I found when looking at the Curl Trace was that FM is dropping some of the headers I send and injecting its own. Here's the snippet I am finding from FM's trace:

GET /api/Leads/P endingExportIds HTTP/1.1
Host: mydomain.leaddocket.com
User-Agent: FileMaker/16.0
Accept: */*
Accept-Encoding: deflate, gzip

Notice: both headers I sent were stripped and replaced. 

Here is the response from BaseElements trace

GET /api/endpoint HTTP/1.1
Host: mydomain.leaddocket.com
User-Agent: libcurl-agent-base-elements-plugin/3.3.4
Accept: application/json
api_key: 1234567890abcdefg

BE left my headers intact. 

 

So what gives? 

Share this post


Link to post
Share on other sites
fmgenius    0

Problem solved. 

 

Use \" rather than '

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By Kent Searight
      I'm trying to get a token from an authorization server using cURL in Insert From URL. When I make the following request in Terminal
      curl -i -X POST -d 'username=myaccountname&password=mypassword' https://authserver.com/login
      I get the token back in the response header.
      Since FileMaker doesn't support the --include (-i) option I haven't been able to figure out how to get the response header with the token.  Anyone have any ideas on how to accomplish this?

      Thanks in advance!
      -Kent
      UPDATE:
      Okay, I figured out I can get a response header by using the option --dump-header and setting it to a variable. The only problem now is that the token comes from a redirect location and I'm only getting the response header from the original URL. I'll keep working on it but I'll be happy to get whatever advice anyone can offer in the meantime. 
    • By 357manch
      With the introduction of cURL options in FM16's Insert from URL script step I've been investigating the possibility of being able to save a copy of my FM solution directly to my Dropbox folder using the https://content.dropboxapi.com/2/files/upload element from Dropbox V2 API.
       
      I've successfully created the access token to pass through as part of this step and the Insert from URL script step successfully creates the stated folder and file in my Dropbox.  However, the file size is always 0 bytes.  I've tried 2 different methods
       
      METHOD 1
      #Export a compacted copy of this file to Temporary Folder
      Set Variable [ $file_path ; Get ( TemporaryPath ) & "Solution.fmp12" ]
      Save a Copy as [ "$file_path" ; compacted ]
       
      #Set my cURL options to variable
      Set Variable [ $curl_header ;
      "curl -X POST https://content.dropboxapi.com/2/files/upload \\" & ¶ &
      "--header \"Authorization: Bearer " & PREFERENCES::Dropbox_AccessToken & "\"  \\" & ¶ &
      "--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"/DB2FM/Solution.fmp12\\\"}\" \\" & ¶ &
      "--header \"Content-Type: application/octet-stream\" \\" & ¶ &
      "--data-binary @" & $file_path ]
       
      #Dropbox URL
      Set Variable [ $dropbox_url ; "https://content.dropboxapi.com/2/files/upload" ]
       
      #Make Request - Set to variable adn then format to JSON field
      Insert from URL [ Verify SSL Certificates ; With dialog: Off ; $json ; $dropbox_url ; cURL options: $curl_header ]
      Set Field [ PREFERENCES:Dropbox_JSON ; JSONFormatElements ( $json ) ]
       
       
       
      METHOD 2
      #Export a compacted copy of this file to Temporary Folder and then import to a container field
      Set Variable [ $file_path ; Get ( TemporaryPath ) & "Solution.fmp12" ]  //note1
      Save a Copy as [ "$file_path" ; compacted ]  //note1
      Insert File [ PREFERENCES::Container ; "$file_path" ]  //note1
      #Set variable following instructions on FileMaker website which states:
      #  -  Direct file access is replaced with a FileMaker variable prefixed by the @ character.
      #  -  To access a file, you can set the variable to a container field, which contains the file, then use that variable as the parameter of the cURL option.
      Set Variable [ $container_path ; PREFERENCES::Container ]
       
      #Set my cURL options to variable
      Set Variable [ $curl_header ; 
      "curl -X POST https://content.dropboxapi.com/2/files/upload \\" & ¶ &
      "--header \"Authorization: Bearer " & PREFERENCES::Dropbox_AccessToken & "\"  \\" & ¶ &
      "--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"/DB2FM/Solution.fmp12\\\"}\" \\" & ¶ &
      "--header \"Content-Type: application/octet-stream\" \\" & ¶ &
      "--data-binary @" & $container_path ]
       
      #Dropbox URL
      Set Variable [ $dropbox_url ; "https://content.dropboxapi.com/2/files/upload" ]
       
      #Make Request - Set to variable adn then format to JSON field
      Insert from URL [ Verify SSL Certificates ; With dialog: Off ; $json ; $dropbox_url ; cURL options: $curl_header ]
      Set Field [ PREFERENCES:Dropbox_JSON ; JSONFormatElements ( $json ) ]
       
       
       
      JSON Response For Both Methods
       
      I get the following JSON Response for both methods
      {
          "client_modified" : "2017-05-16T11:22:47Z",
          "content_hash" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
          "id" : "id:heJWQ1SWwJsAAAAAAcMWNw",
          "name" : "Solution.fmp12",
          "path_display" : "/DB2FM/Solution.fmp12",
          "path_lower" : "/db2fm/solution.fmp12",
          "rev" : "3a0412f00f58892",
          "server_modified" : "2017-05-16T11:22:48Z",
          "size" : 0
      }
       
      Any ideas as to why the file is created but with no content.  I've also tried this with a number of different file types (.png, .txt, .pdf) by manually inserting a file into the container and greying out the 3 steps marked //note1 above but the result is always the same.
       
    • By liamob1
      I'm looking for a method of authenticating with google via FileMaker. I would like to run post commands via the Insert from URL command to allow my FMDB to publish Cal Events to a specific calendar. Realistically I'd want this to be automatic when an appointment is assigned on the system. 
      At the moment, I can get a post to work, but it returns an error. I imagine this is because the authentication hasn't taken place. 
      Has anyone managed to get a working OAuth 2.0 setup/Google Login on Filemaker that will work with POST and GETs. 
      Once I've got Calendar to work, then I want to start on Drive and Gmail. 
      Thanks!
    • By DeathRobot
      Hi. I am trying to script the getting of some data from a website that has an API. I have BaseElementsPlugin and was given an example bit of code by the website:
       data = {'domain': domain, 'include_generic': True}
                  headers = {'X-Api-Key': 'xyz123'}
                  resp = requests.post('https://api.anymailfinder.com/v3.0/search/domain.json', data=data, headers=headers)
      I have never dealt with this kind of programming and am not even sure where this info would go or what script step(s) I would use to call this. Is this CURL? Are you aware of sample FM scripting that I could use as a model to figure this out?
      Thanks for any help with this!
    • By GEORGL03
      Good afternoon everyone,
       
      Some BackStory:
      When FMCloud was first announced, I was ecstatic; I'm all for moving towards cloud technology for my agency. I was nearly there...about to pull the trigger and start a migration scheme from my current setup into the FMCloud, but then the one big caveat was found..
      "Supports custom app authentication via FileMaker user accounts only" AKA no External Authentication. But that is fine, I understand it was released for small businesses which need the scalability of AWS, but this DOES NOT work for my agency. I spent half a year moving away from filemaker user accounts, I can't go back; plus they have a Single Sign-on initiative that I'm trying to meet.
       
      But I still need to get off of my old physical towers.So my next idea is that I want to spin up an EC2 in AWS and put filemaker server on it as an alternative, but I can't find any verbiage that details how that works(or if it works) in the way that I would like. Namely, I need my AWS server to talk to Active Directory, preferably by ADFS or SAML (lesser so).
       
      So the question:
      Can I setup external Authentication to an Active Directory from a server being hosted on AWS that is housing FileMaker Server 15? If so, What should I make note of before diving into this?
       
      Thanks for any help and clarification someone can provide.
       
      ~Levi
×

Important Information

By using this site, you agree to our Terms of Use.