Hey Tim,
Your emails aren't getting posted to the users list, only the nabble forum. Are you a subscriber? If not you should sign up as described here: http://forum.world.st/mailing_list/MailingListOptions.jtp?forum=1310670 I know Sven (the Zinc package author) may have other or better ideas for how to approach what you're attempting. There is also some oAuth stuff in this repo: http://smalltalkhub.com/#!/~JanVanDeSandt/Cloudfork Good luck. Paul. Tim Mackinnon wrote > That Charles app is pretty darn good - I can see some differences between > a browser and Zn. > > The encoding of submitted form values is different (the browser seems to > encode a / as %2F when it submits a field value?), there are also some > cookies missing. > > Will check these difference out. > > Tim > > On 25 Jun 2014, at 15:35, Tim Mackinnon < > tamackinnon@ > > wrote: > >> Hey Paul - I was following: >> https://trello.com/docs/gettingstarted/index.html#token - where it shows >> how to manually get a token. When you do an initial request like: >> https://trello.com/1/authorize?key=substitutewithyourapplicationkey&name=My+Application&expiration=30days&response_type=token >> >> It takes you to a page in your browser which has some hidden fields, >> which you can then click on accept and its posts the form to the url >> (/1/token/approve). You then get a text result showing your token. >> >> I thought this would be a simple way to get the credentials - as in just >> do what the user does manually. However, I guess its not a simple as that >> - and it may need OAuth, which I can see there are some Pharo classes >> Sven did - so maybe I can investigate that (although its getting a bit >> more complicated than I wanted). >> >> Tim >> >> p.s. Of course if I get it working, happy to share the secret sauce (I’ve >> also spotted a few bugs in the new Pharo as well - so I should report >> those too) >> >> On 25 Jun 2014, at 15:14, Paul DeBruicker [via Smalltalk] < > [email protected] > > wrote: >> >>> Where in their docs do you see to use the /1/token/approve endpoint? >>> >>> >>> I didn't see it in this list: >>> >>> https://trello.com/docs/api/index.html >>> >>> or in the discussion about user tokens >>> >>> >>> >>> >>> >>> also - when you get this working you'll post a MIT licensed version for >>> everyone to use right? ;) >>> >>> >>> >>> >>> >>> >>> >>> Tim Mackinnon wrote >>> Hi Paul - yes that ZnEasy call works fine - in my case I am trying to >>> read some data from Trello.com and so you do an initial request with an >>> application key and then you authorise an operation with some parameters >>> to get back a token to use for private requests. >>> >>> The sequence I am using is this: >>> >>> | znc resp soup key sig | >>> >>> (znc := ZnClient new) logToTranscript. >>> >>> resp := znc >>> url: 'https://trello.com/1/authorize'; >>> queryAt: 'scope' put: 'read'; >>> queryAt: 'expiration' put: '1day'; >>> queryAt: 'name' put: 'Pharo App'; >>> queryAt: 'response_type' put: 'token'; >>> queryAt: ‘key' put: 'xxxxxxx1d588819825d57da6dad4dd'; >>> get; >>> response. >>> >>> soup := (Soup fromString: resp entity). >>> key := soup findTag: [ :e | (e name = 'input') and: [ (e attributeAt: >>> 'name' ifAbsent: ['']) = 'requestKey' ]]. >>> sig := soup findTag: [ :e | (e name = 'input') and: [ (e attributeAt: >>> 'name' ifAbsent: ['']) = 'signature' ]]. >>> >>> Transcript cr; cr; show: (key attributeAt: 'value'); cr; show: (sig >>> attributeAt: 'value'); cr; cr. >>> >>> resp := znc >>> resetEntity; >>> url: '/1/token/approve'; >>> formAt: 'approve' put: 'Allow'; >>> formAt: 'requestKey' put: (key attributeAt: 'value'); >>> formAt: 'signature' put: (sig attributeAt: 'value'); >>> post; >>> response. >>> >>> >>> If I look at the logging in the transcript - the first part works fine: >>> >>> 2014-06-25 14:50:37 042813 I Wrote a ZnRequest(GET >>> /1/authorize?response_type=token&key=xxxxxxxxxx1d588819825d57da6dad4dd&scope=read&name=Pharo%20App&expiration=1day) >>> >>> 2014-06-25 14:50:37 042813 D Sent headers >>> Accept: */* >>> User-Agent: Zinc HTTP Components 1.0 >>> Host: trello.com >>> >>> 2014-06-25 14:50:37 042813 I Read a ZnResponse(200 OK >>> text/html;charset=utf-8 2199B) >>> ….. >>> >>> Its the next bit of the log which is doing something weird - and showing >>> a resource moved - so I wonder if the server is expecting something >>> extra? The transcript is showing I have extracted my key and signature >>> to populate my form and then I see the 302 status code? >>> >>> xxxxxx1bf70c02d829c9541f0c3c >>> xxxxxx5437639/0f28401bf858e7f623c971a45b77291dc113988782 >>> >>> >>> 2014-06-25 14:50:37 042813 I Wrote a ZnRequest(POST /1/token/approve) >>> 2014-06-25 14:50:37 042813 D Sent headers >>> User-Agent: Zinc HTTP Components 1.0 >>> Content-Length: 146 >>> Host: trello.com >>> Content-Type: application/x-www-form-urlencoded >>> Accept: */* >>> >>> 2014-06-25 14:50:37 042813 I Read a ZnResponse(302 Moved Temporarily >>> text/plain;charset=UTF-8 35B) >>> 2014-06-25 14:50:37 042813 D Received headers >>> X-Frame-Options: DENY >>> Content-Length: 35 >>> Content-Type: text/plain; charset=UTF-8 >>> X-Powered-By: Express >>> X-Content-Type-Options: nosniff >>> Location: / >>> Cache-Control: no-store, no-cache >>> Strict-Transport-Security: max-age=15768000 >>> Date: Wed, 25 Jun 2014 13:50:37 GMT >>> X-Xss-Protection: 1; mode=block >>> Vary: Accept, Accept-Encoding >>> >>> 2014-06-25 14:50:37 042813 D Redirecting to https://trello.com:443/ >>> 2014-06-25 14:50:37 042813 I Wrote a ZnRequest(GET /) >>> 2014-06-25 14:50:37 042813 D Sent headers >>> User-Agent: Zinc HTTP Components 1.0 >>> Host: trello.com >>> Accept: */* >>> >>> 2014-06-25 14:50:38 042813 I Read a ZnResponse(200 OK >>> text/html;charset=utf-8 147886B) >>> 2014-06-25 14:50:38 042813 D Received headers >>> X-Frame-Options: DENY >>> Content-Length: 147886 >>> Set-Cookie: sup=1; Path=/; Expires=Thu, 25 Jun 2015 13:50:37 GMT >>> Content-Type: text/html; charset=utf-8 >>> X-Powered-By: Express >>> Etag: "579547792" >>> X-Content-Type-Options: nosniff >>> Date: Wed, 25 Jun 2014 13:50:37 GMT >>> Cache-Control: no-store, no-cache >>> Strict-Transport-Security: max-age=15768000 >>> X-Xss-Protection: 1; mode=block >>> Vary: Accept-Encoding >>> >>> 2014-06-25 14:50:38 042813 D Received cookie: sup=1; path=/; >>> domain=trello.com; expires=Thu, 25 Jun 2015 13:50:37 GMT >>> 2014-06-25 14:50:38 042813 D Received cookie: sup=1; path=/; >>> domain=trello.com; expires=Thu, 25 Jun 2015 13:50:37 GMT >>> 2014-06-25 14:50:38 042813 T GET / 200 147886B 1136ms >>> >>> >>> I think I’m a bit out of my depth on this, so maybe I might have to find >>> a different way of doing things. >>> >>> I appreciate the help. >>> >>> Tim >>> >>> On 25 Jun 2014, at 14:41, Paul DeBruicker [via Smalltalk] <[hidden >>> email]> wrote: >>> >>> > Are you able to get the contents of >>> > >>> > ZnEasy get: 'https://www.google.com' >>> > >>> > >>> > ? >>> > >>> > >>> > >>> > If so then is not an SSL issue. If not you'll need to use charles >>> proxy (http://www.charlesproxy.com/) or an equivalent to see the decoded >>> https requests. Wireshark only has encrypted packets. >>> > >>> > >>> > Are you doing the #resetEntity prior to setting the url or other >>> parameters when doing your POST? >>> > >>> > >>> > >>> > Tim Mackinnon wrote >>> > Actually looking at this a bit more - #resetEntity does do what you >>> suggest (my mistake) - but I still have some problem, possibly related >>> to https? Not sure whats going on as it looks like the post call is >>> sending out what I think it should - but somehow the receiving server is >>> not happy and is redirecting to “/“? >>> > >>> > Not really sure how to debug that - guess I might have to learn how to >>> use wireshark. >>> > >>> > Tim >>> > >>> > On 25 Jun 2014, at 08:55, Tim Mackinnon <[hidden email]> wrote: >>> > >>> > > Hi Paul - thanks for your suggestions, #resetEntity doesn't seem to >>> clear the parameters or have any effect (which I think makes sense given >>> the name?). >>> > > >>> > > The get portion and decoding parameters is all working perfectly, >>> it's the post that has me confused. >>> > > >>> > > If I inspect the request - it seems to be issuing to "/" - so it's >>> like the URL: is not being honoured (and the response I get back is the >>> contents of the / webpage). >>> > > >>> > > I think I'm confused about the interaction of URL:, and setting >>> request and form params. From the docs, it wasn't obvious to me that >>> ordering is important - but it seems that it is (I was expecting #post >>> or #get to assemble everything when invoked - but I'm not sure it works >>> like that). >>> > > >>> > > I guess I will have to debug through the code. >>> > > >>> > > Tim >>> > > >>> > > Sent from my iPhone >>> > > >>> > > On 25 Jun 2014, at 05:12, "Paul DeBruicker [via Smalltalk]" <[hidden >>> email]> wrote: >>> > > >>> > >> Do your query parameters from the initial GET get cleared from the >>> request before the POST? If you're not sure send the client >>> #resetEntity. >>> > >> >>> > >> >>> > >> Is the response of the GET correct & are the keys decoded properly? >>> if not can you get a valid signature and request key from somewhere else >>> (e.g. web ui, or ....) to test the POST? >>> > >> >>> > >> >>> > >> Is it important to reuse the connection? IF not add the #beOneShot >>> method to both and see if that helps as it does some resetting. >>> > >> >>> > >> The #post method is a convenience method that conjoins a send to >>> #method: and #execute. You could separate them and use #method: at the >>> top and #execute; before the #request line but I'd be surprised to learn >>> that fixed things. >>> > >> >>> > >> >>> > >> Good luck >>> > >> >>> > >> Paul >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> Tim Mackinnon wrote >>> > >> Hi I'm a bit confused about how to send a get request to a resource >>> and then post a response to it? I seem to fail on the post part, as it >>> seems that my query is not being well formeed - or something is not >>> being cleared when I reuse the connection I used in the get. My code >>> looks as follows (and I'm sure there is a simple mistake). >>> > >> >>> > >> It seems that in my post request, it doesn't formulate the post I >>> expect - it shows a GET / msg, and as such my response doesn't give me >>> the token I expect. If I move the "post" line up to the start, I seem >>> to get a request header I expect, but still not the the result I expect. >>> Can anyone offer any tips? Do I need to clear my Client in some way >>> before the second post operation? >>> > >> >>> > >> Tim >>> > >> >>> > >> | znc resp | >>> > >> >>> > >> (znc := ZnClient new) logToTranscript. >>> > >> >>> > >> resp := znc >>> > >> url: 'https://trello.com/1/authorize'; >>> > >> queryAt: 'scope' put: 'read'; >>> > >> queryAt: 'expiration' put: '1day'; >>> > >> queryAt: 'name' put: 'Pharo App'; >>> > >> "queryAt: 'response_type' put: 'token';" >>> > >> queryAt: 'key' put: 'xxxxxx1d588819825d57da6dad4dd'; >>> > >> get; >>> > >> request; >>> > >> response. >>> > >> >>> > >> soup := (Soup fromString: resp entity). >>> > >> sig := soup findTag: [ :e | (e name = 'input') and: [ (e >>> attributeAt: 'name' ifAbsent: ['']) = 'signature' ]]. >>> > >> key := soup findTag: [ :e | (e name = 'input') and: [ (e >>> attributeAt: 'name' ifAbsent: ['']) = 'requestKey' ]]. >>> > >> >>> > >> resp := znc >>> > >> url: 'https://trello.com/1/token/approve'; >>> > >> formAt: 'approve' put: 'Allow'; >>> > >> formAt: 'requestKey' put: (key attributeAt: 'value'); >>> > >> formAt: 'signature' put: (sig attributeAt: 'value'); >>> > >> post; >>> > >> request; >>> > >> response. >>> > >> >>> > >> >>> > >> If you reply to this email, your message will be added to the >>> discussion below: >>> > >> http://forum.world.st/ZnClient-get-then-post-tp4764605p4764608.html >>> > >> To unsubscribe from ZnClient get then post?, click here. >>> > >> NAML >>> > >>> > >>> > If you reply to this email, your message will be added to the >>> discussion below: >>> > http://forum.world.st/ZnClient-get-then-post-tp4764605p4764717.html >>> > To unsubscribe from ZnClient get then post?, click here. >>> > NAML >>> >>> >>> If you reply to this email, your message will be added to the discussion >>> below: >>> http://forum.world.st/ZnClient-get-then-post-tp4764605p4764722.html >>> To unsubscribe from ZnClient get then post?, click here. >>> NAML >> -- View this message in context: http://forum.world.st/ZnClient-get-then-post-tp4764605p4764779.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
