Hi Randy,
The following works for me:
where $enc is the encoded creds as you had above.

post(URI("https://api.twitter.com/oauth2/token";),"grant_type=client_credentials",{"Authorization"
=> "Basic $enc","Content-Type" =>
"application/x-www-form-urlencoded;charset=UTF-8"})

Note the URI() before the url. We should fix that.

regards,
Bassem


On Wed, Feb 5, 2014 at 9:18 AM, Randy Zwitch <randy.zwi...@fuqua.duke.edu>wrote:

> I'm trying to work through the application-only authentication for Twitter
> (https://dev.twitter.com/docs/auth/application-only-auth), but I can't
> seem to get the POST request right at step 2.
>
> I'm fairly certain I have the credentials portion right, but for whatever
> reason I can't get Twitter to recognize the body of my request. Here's what
> I've tried:
>
> using Codecs, HttpCommon, Requests
>
> consumer_key = "6nOtpXmf4bYuu3...";
> consumer_secret = "sES5Zlj096St0O65VX...";
>
> #Function to create authentication header
> function encodecredentials(consumer_key::String, consumer_secret::String)
>     #URI encode keys for future-proofing, per Twitter docs
>     bearer_token_credentials =
> "$(encodeURI(consumer_key)):$(encodeURI(consumer_secret))"
>     return(base64(bearer_token_credentials))
> end
>
> #1. Try POST request by itself - Expect an error
>
> response = post("https://api.twitter.com/oauth2/token";)
> println(response.data)
>
> {"errors":[{"label":"authenticity_token_error","code":99,"message":"Unable
> to verify your credentials"}]}
>
> #2. Add in authentication
> #Change in error message suggests Twitter okay with my Authorization
> credentials
>
> response = post("https://api.twitter.com/oauth2/token";;
>                 headers = {"Authorization" => "Basic
> $(encodecredentials(consumer_key, consumer_secret))",
>                            "Content-Type" =>
> "application/x-www-form-urlencoded;charset=UTF-8"},
>                 data = "grant_type=client_credentials")
> println(response.data)
>
> {"errors":[{"label":"forbidden_missing_parameter","code":170,"message":"Missing
>  required parameter: grant_type"}]}
>
>
> #3. Try authentication with data as Dict instead of string
>
> #Get same error message
>
>
> response = post("https://api.twitter.com/oauth2/token";;
>                 headers = {"Authorization" => "Basic 
> $(encodecredentials(consumer_key, consumer_secret))",
>                            "Content-Type" => 
> "application/x-www-form-urlencoded;charset=UTF-8"},
>                 data = {"grant_type" => "client_credentials"})
> println(response.data)
>
>
> {"errors":[{"label":"forbidden_missing_parameter","code":170,"message":"Missing
>  required parameter: grant_type"}]}
>
>
> So regardless of how I specify the body parameter, Twitter doesn't want to
> recognize what I'm doing. Is there a different way I'm supposed to add data
> to a POST request?
>

Reply via email to